android Share Intent not works for text and image both

房东的猫 提交于 2019-12-13 06:07:41

问题


Hi there is the code i used to share text and image :

    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 is my custom class and App.getString is :

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

it don't works well on Telegram, Gmail and same Apps And only share text with out Image


回答1:


i found the answer for it, it work for me and i sent text and image both in one message to Telegram app.here is my code.

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);



回答2:


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)));


来源:https://stackoverflow.com/questions/32412055/android-share-intent-not-works-for-text-and-image-both

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!