java - Android各版本分享文字图片时出现错误

标签 java android android-intent share

代码如下:

        final Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("*/*");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra(Intent.EXTRA_SUBJECT, subject.toString());
        intent.putExtra(Intent.EXTRA_TEXT, text.toString());
        intent.putExtra(Intent.EXTRA_STREAM, "file://" + path);

         startActivityForResult(
                Intent.createChooser(intent, title.toString()), REQUEST_CODE);

结果如下

  1. API 10:工作
  2. API 14:错误

最佳答案

使用此方法与文本共享照片。调用此方法并传递参数 nameofapp 和 imagepath。应用程序的名称意味着您要在其上共享,例如 gmail、facebook、twitter。

private void share(String nameApp, String imagePath) {
    try
    {
        List<Intent> targetedShareIntents = new ArrayList<Intent>();
        Intent share = new Intent(android.content.Intent.ACTION_SEND);
        share.setType("image/jpeg");
        List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(share, 0);
        if (!resInfo.isEmpty()){
            for (ResolveInfo info : resInfo) {
                    Intent targetedShare = new Intent(android.content.Intent.ACTION_SEND);
                    targetedShare.setType("image/jpeg"); // put here your mime type
                    if (info.activityInfo.packageName.toLowerCase().contains(nameApp) || info.activityInfo.name.toLowerCase().contains(nameApp)) {
                        targetedShare.putExtra(Intent.EXTRA_SUBJECT, "Text");
                        targetedShare.putExtra(Intent.EXTRA_TEXT,"This photo is created by APP");
                        targetedShare.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(imagePath)) );
                        targetedShare.setPackage(info.activityInfo.packageName);
                        targetedShareIntents.add(targetedShare);
                    }
                }
                Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Select app to share");
                chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
                startActivity(chooserIntent);
        }
    }
    catch(Exception e){
    }
 }

像这样使用:-

try {
    File filePath = "/mnt/sdcard/vmphoto.jpg"; //This is imagefile path in your change it acc. to your requirement.
    share("facebook",filePath.toString());

}
catch(Exception e) {
           //exception occur might your app like gmail , facebook etc not installed or not working correctly.
}

关于java - Android各版本分享文字图片时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899522/

相关文章:

android - 从其他 Activity 中错误地调用了 onCreate() 和 onPause()

java - 使用 Maven 为 OSGi 获取 "wrap"jar 的好方法

android - 如何解决应用程序 list 中的 URI 方案未正确设置错误

Java:用随机字符串替换字符串的最简单方法

java - 卡在从 JSONObject 获取 JSONArray 上

android - 使用 Google API 客户端库和自行访问 token 端点有什么区别

Android - 单击 ActionBar 应用程序图标,创建新的 Activity 实例

java - 如何使用变量来启动新的 Intent

java - 如何保存并通过电子邮件发送我的 .java 文件? (初学者)

java - Apache Camel JMS : "Not allowed to create destination" when trying to connect to a queue