Android分享意图图片共享无效

时间:2016-08-11 10:43:46

标签: android android-intent android-activity uri share-intent

我是Android的新手,并且通过共享意图分享图片时出现问题。我用Google搜索了很多东西,尝试了各种各样的东西,但仍然无法找到解决方案。

我的代码是:

            Intent shareIntent = new Intent(Intent.ACTION_SEND);
            shareIntent.setType("image/*");
            shareIntent.putExtra(Intent.EXTRA_STREAM,uri);
            this.startActivityForResult(Intent.createChooser(shareIntent,"Share with"),12);

我检查了uri,保存的文件是位图及其返回的文件。但是在共享期间显示的图像无效。 Gmail表示无法附加附件,消息应用无法加载图片。

文字共享工作正常。

基本上我正在为Unity编写插件。这是Unity Side上的代码:

string destination = Path.Combine(Application.persistentDataPath,"sharingImage" + ".png");
            if (!File.Exists(destination)) {
                print("creating new file");
                File.Create(destination);
            }
            File.WriteAllBytes(destination, bytes);

            print("destination= "+destination);

            AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
            AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse","file://" + destination);

            using (AndroidJavaClass pluginClass = new AndroidJavaClass("com.kashiftasneem.sharelib.ShareController")) {

                AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");

                pluginClass.CallStatic("Share",message,uriObject,jo,gameObject.name,destination);
            }

我正在记录目的地和uri,它们是:

  

目的地=   /data/data/com.kashiftasneem.shareandroidplugin2/files/sharingImage.png

     

uri =   文件:///data/data/com.kashiftasneem.shareandroidplugin2/files/sharingImage.png

2 个答案:

答案 0 :(得分:0)

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to)));

这可能会有所帮助。

答案 1 :(得分:0)

试试这段代码:

        Bitmap bitmap = getBitmapFromView(idForSaveView);
        try {
            File file = new File(this.getExternalCacheDir(), "appdiam.png");
            FileOutputStream fOut = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
            fOut.flush();
            //fOut.close();
            file.setReadable(true, false);
            final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
            intent.setType("image/png");
            startActivity(Intent.createChooser(intent, "Share image via"));
        } catch (Exception e) {
            e.printStackTrace();
        }