草庐IT

android - Xamarin Android : Share image via standard api (email, facebook 等)

coder 2023-12-11 原文

我需要在 Xamarin Android 中实现标准共享。我找到并更改了 Xamarin 的代码。看起来像这样

    public void Share (string title, string content)
    {
        if (string.IsNullOrEmpty (title) || string.IsNullOrEmpty (content))
            return;

        var name = Application.Context.Resources.GetResourceName (Resource.Drawable.icon_120).Replace (':', '/');
        var imageUri = Uri.Parse ("android.resource://" + name);
        var sharingIntent = new Intent ();
        sharingIntent.SetAction (Intent.ActionSend);
        sharingIntent.SetType ("image/*");
        sharingIntent.PutExtra (Intent.ExtraText, content);
        sharingIntent.PutExtra (Intent.ExtraStream, imageUri);
        sharingIntent.AddFlags (ActivityFlags.GrantReadUriPermission);
        ActivityContext.Current.StartActivity (Intent.CreateChooser (sharingIntent, title));
    }

此代码调用标准共享功能,但当我选择 Facebook 或电子邮件时,出现“无法加载图像”。文件位于“/Resources/drawable-xhdpi/icon_120.png”。

你能指出我做错了什么吗?

最佳答案

我认为应用程序图标是在您的应用程序私有(private)的目录中创建的,因此其他应用程序无法访问它。

您需要将它保存在其他应用程序可以访问它的地方,然后从该位置共享它,如下所示:

public void Share (string title, string content)
{
    if (string.IsNullOrEmpty (title) || string.IsNullOrEmpty (content))
                return;

    Bitmap b = BitmapFactory.DecodeResource(Resources,Resource.Drawable.icon_120);

    var tempFilename = "test.png";
    var sdCardPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
    var filePath = System.IO.Path.Combine(sdCardPath, tempFilename);
    using (var os = new FileStream(filePath, FileMode.Create))
    {
        b.Compress(Bitmap.CompressFormat.Png, 100, os);
    }
    b.Dispose ();

    var imageUri = Android.Net.Uri.Parse ($"file://{sdCardPath}/{tempFilename}");
    var sharingIntent = new Intent ();
    sharingIntent.SetAction (Intent.ActionSend);
    sharingIntent.SetType ("image/*");
    sharingIntent.PutExtra (Intent.ExtraText, content);
    sharingIntent.PutExtra (Intent.ExtraStream, imageUri);
    sharingIntent.AddFlags (ActivityFlags.GrantReadUriPermission);
    StartActivity (Intent.CreateChooser (sharingIntent, title));
}

同时为您的应用添加 ReadExternalStorage 和 WriteExternalStorage 权限。

如果可行,请告诉我。

关于android - Xamarin Android : Share image via standard api (email, facebook 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31662448/

有关android - Xamarin Android : Share image via standard api (email, facebook 等)的更多相关文章

  1. ruby-on-rails - 如何在 Rails Controller Action 上触发 Facebook 像素 - 2

    我有一个ruby​​onrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby-on-rails - 使用 HTTP.get_response 检索 Facebook 访问 token 时出现 Rails EOF 错误 - 2

    我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token

  4. ruby - 我需要从 facebook 游戏中抓取数据——使用 ruby - 2

    修改(澄清问题)我已经花了几天时间试图弄清楚如何从Facebook游戏中抓取特定信息;但是,我遇到了一堵又一堵砖墙。据我所知,主要问题如下。我可以使用Chrome的检查元素工具手动查找我需要的html-它似乎位于iframe中。但是,当我尝试抓取该iframe时,它​​是空的(属性除外):如果我使用浏览器的“查看页面源代码”工具,这与我看到的输出相同。我不明白为什么我看不到iframe中的数据。答案不是它是由AJAX之后添加的。(我知道这既是因为“查看页面源代码”可以读取Ajax添加的数据,也是因为我有b/c我一直等到我可以看到数据页面之后才抓取它,但它仍然不存在)。发生这种情况是因为

  5. ruby-on-rails - Rails 设计 : "You need to sign in or sign up before continuing" instead of "You will receive an email with instructions.." - 2

    我已经安装了DeviseonRails4.2.0,一切似乎都在工作,我使用了以下指南:http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/我的设计模块是:devise:database_authenticatable,:registerable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:omniauthable唯一的问题是,如果我尝试通过转到注册页面创建一个新帐户,然后在输入我的电子邮

  6. ruby-on-rails - 将 Facebook Connect 与 Authlogic 结合使用 - 2

    我正在尝试使Authlogic和FacebookConnect(使用Facebook)发挥良好的作用,以便您可以通过正常注册方式或使用Facebookconnect创建帐户。我已经能够让连接以一种方式工作,但注销只会在facebook而不是我的网站上注销,我必须删除cookie才能使其正常工作。任何帮助都会很棒,谢谢! 最佳答案 这是我使用FacebookConnect扩展、authlogic和OpenID制作的示例应用程序。它仍然需要一些工作,但它确实起作用了。http://big-glow-mama.heroku.com/htt

  7. ruby-on-rails - "554 Please activate your Mailgun account. Check your inbox or log in to your control panel to resend the activation email."错误 Ruby on Rails - 2

    我正在使用RubyonRails构建网络应用程序。我正在使用Mailgun作为这个应用程序的邮件程序。当我使用Facebook注册时它工作正常但是当我尝试使用电子邮件和密码注册时,我不断收到此错误“554请激活您的Mailgun帐户。检查您的收件箱或登录到您的控制面板以重新发送激活电子邮件。“我已经在mailgun仪表板中将eamil授权给授权收件人。这是我的代码:Registrations_controller.rbclassRegistrationsControllerconfig/environments/development.rbRails.application.confi

  8. ruby-on-rails - Facebook Canvas 应用程序不保存 session - 2

    我制作了一个测试facebook应用程序只是为了玩玩,我正在使用session来存储身份验证。我正在使用omniauth。当我从http://fbbtest.heroku.com/登录时然后刷新页面,session仍然保存,它说我已经登录。当我从Canvas上尝试时http://apps.facebook.com/herokutestapp/它让我登录,重定向回来并说我已登录但是当我手动刷新它然后说我没有登录。我必须对rails3中的session做一些特别的事情以便它也可以在FacebookCanvas?这是我目前在我的Controller和View中拥有的内容defindexend

  9. ruby-on-rails - FactoryGirl错误: "Email has already been taken." - 2

    使用下面的工厂时出现错误(如下所示)。它可以通过运行rakedb:test:prepare暂时修复,但是,这只会修复一次运行的测试。我可以做些什么来获得更永久的修复?我应该使用database_cleaner吗?如果是这样,任何人都可以提供有关设置的任何见解(我正在使用RSpec、Capybara、Rails4、Ruby2)吗?谢谢!我正在使用以下工厂:FactoryGirl.definedofactory:userdosequence(:username){|n|"Person#{n}"}sequence(:email){|n|"person_#{n}@example.com"}pa

  10. ruby-on-rails - 来自 Rails Heroku 的 Facebook Open Graph - 2

    我一整天都在与这个问题作斗争,真的需要一些意见。我有一个在HerokuCedar上运行的Rails应用程序(3.1.3),试图使用gemfb_graph(2.4.0)发布一些FacebookOpenGraph操作。这是我的代码。beginapp=FbGraph::Application.new(ENV['facebook_app_id'])me=FbGraph::User.me(user.facebook_access_token)logger.info"Facebook:User#{user.name}reviewinggame#{game_url(review.game)}"act

随机推荐