android Share Intent不适用于文本和图像

时间:2015-09-05 10:34:33

标签: android share

您好我有用于分享文字和图片的代码:

    Toast.makeText(App.getContext(), "Share", Toast.LENGTH_LONG).show();
    Intent sharingIntent = null;
    if(!image_resource.isEmpty()){
        sharingIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
        String imagePath = "SD-Card Path";
        ExceptionHelpers.dLog("SHARE_LOG", "Share image path : " + imagePath);
        ExceptionHelpers.dLog("SHARE_LOG", "Share image exist : " + (new File(imagePath).exists())); // It return 'true' on LogCat
        if(new File(imagePath).exists()) {
            ExceptionHelpers.dLog("SHARE_LOG", "Share image and text");
            Uri imageUri = Uri.fromFile(new File(imagePath));
            sharingIntent.setType("*/*"); // also 'image/*' tested and not works
            sharingIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
        }else{
            ExceptionHelpers.dLog("SHARE_LOG", "Share text");
            sharingIntent = new Intent(Intent.ACTION_SEND);
            sharingIntent.setType("text/plain");
        }
    }else {
        ExceptionHelpers.dLog("SHARE_LOG", "Share text");
        sharingIntent = new Intent(Intent.ACTION_SEND);
        sharingIntent.setType("text/plain");
    }
    String shareBody = ""+App.getString(R.string.this_text_shared_from)+" : "+App.getString(R.string.app_name)+" "+App.getString(R.string.share_text_2)+" \n "+
            App.getString(R.string.share_about);
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "" + App.getString(R.string.app_name));
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
    startActivity(Intent.createChooser(sharingIntent, "" + App.getString(R.string.share_via)));

App是我的自定义类,App.getString是:

    public static String getString(int resId){
        return App.context.getString(resId);
    }

它在Telegram,Gmail和相同的应用程序上运行不正常并且只与图像共享文本

2 个答案:

答案 0 :(得分:3)

我找到了它的答案,它适用于我,我在一条消息中将文本和图像发送到Telegram应用程序。这是我的代码。

Intent intent = new Intent(Intent.ACTION_SEND);
packageName="org.telegram.messenger";
            intent.setPackage(packageName);
//this is my art.... 
intent.setType("image/text/plain");


path=getBitMapPath();//this is path of image 
uri = Uri.parse(path);
putExtra(Intent.EXTRA_STREAM, uri);
putExtra(Intent.EXTRA_TEXT, "hello telegram. i do it!");
ss = Intent.createChooser(intent, "hamid");
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
//addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(ss);

答案 1 :(得分:0)

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
        sharingIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
    else
        sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);

    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
    sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);
    sharingIntent.setType("image/*");
    sharingIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    sharingIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

    getActivity().startActivity(Intent.createChooser(sharingIntent, getResources().getString(R.string.share_using)));