Android 通过actionProvider共享图像:what';怎么了?

Android 通过actionProvider共享图像:what';怎么了?,android,shareactionprovider,Android,Shareactionprovider,我正试图通过shareActionProvider共享图像,但我尝试与之共享文件的每个应用程序似乎都无法处理文件:选定的应用程序将被打开,但之后我看不到任何图像(即skype会自动打开,但根本不发送任何文件) 以下是我在创建选项菜单中输入的内容: getSupportMenuInflater().inflate(R.menu.menu_statistics, menu); ShareActionProvider mShareActionProvider = (ShareActionProvid

我正试图通过shareActionProvider共享图像,但我尝试与之共享文件的每个应用程序似乎都无法处理文件:选定的应用程序将被打开,但之后我看不到任何图像(即skype会自动打开,但根本不发送任何文件)

以下是我在创建选项菜单中输入的内容:

getSupportMenuInflater().inflate(R.menu.menu_statistics, menu);

ShareActionProvider mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.actionbar_share_chart).getActionProvider();

Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");

String root= Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/charts");
String fname = "chart.png";
File file = new File(myDir, fname);
URI uri = file.toURI();
shareIntent.putExtra(Intent.EXTRA_STREAM, uri.toString());
mShareActionProvider.setShareIntent(shareIntent);

if(file.exists())
    Log.d("debugCheck", "the file exists");

return true;
我得到的当然是

该文件已存在


在我的日志中。那为什么呢?为什么应用程序会打开但不会附加图像?

好的,我发现了错误。我应该创建一个
URI
对象,而不是使用该URI类:

Uri screenshotUri = Uri.parse("file:///storage/sdcard0/charts/chart.png");
我应该把它作为一个额外的东西传递给你

shareIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
案子解决了