我尝试与SD卡分享照片。
类MainActivity.java
Intent shareIntent = new Intent(Intent.ACTION_SEND);
File baseDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
String fileName = "/cats.jpg";
File file = new File(baseDir + fileName);
Uri uri = Uri.fromFile(file);
shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(shareIntent.createChooser(shareIntent, "Send Picture"));
我添加到我的Manifest.xml:
uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
图像"猫"在...
MySmartphone\Card\DCIM\cats.jpg
当我启动我的应用程序时,我可以选择一个应用程序来分享我的照片。但是当我打开它时,它无法发送或打开图像。我经常举杯祝贺"不支持"或"错误分享图片"。我认为我的uri或文件是错误的,但我找不到我的错误。发送短信没问题。
我的uri:
file:///data/user/0/com.example.jana.showpicture/files/cats.jpg
我的档案: /storage/emulated/0/cats.jpg
答案 0 :(得分:0)
您可能正在为Android API 24及更高版本构建。自API 24以来,增加了一种新的安全性。参见:
https://developer.android.com/about/versions/nougat/android-7.0-changes.html#perm
您现在需要多做一点,在AndroidManifest.xml
:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.jana.showpicture.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
/res/xml/provider_paths.xml
:
<paths>
<external-path
name="external_files"
path="." />
</paths>
和Java:
Uri uri = FileProvider.getUriForFile(activity,"com.example.jana.showpicture.provider",
file);
shareIntent .setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY |
Intent.FLAG_GRANT_READ_URI_PERMISSION);