【发布时间】:2016-08-29 19:31:23
【问题描述】:
我在与文件提供商和 Intent.EXTRA_TEXT 共享视频 .mp4 文件时被拒绝。
如果我删除该行:
shareIntent.putExtra(Intent.EXTRA_TEXT, "#myappHashtag");
一切正常。但我需要视频文件 + 额外文本。
我认为问题是:分享 uri 中的 caption=%23myappHashtag 但我该如何解决?
非常感谢。
private void ShareItem(File fileToShare) {
String package_name = "com.lucagrillo.myapp";
Uri uri = FileProvider.getUriForFile(this, package_name + ".fileprovider", fileToShare);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.putExtra(Intent.EXTRA_TEXT, "#myappHashtag");
shareIntent.setType(intentFormatType);
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.share_with)));
}
例外:
Writing exception to parcel
java.lang.SecurityException: Permission Denial: reading android.support.v4.content.FileProvider uri content://com.lucagrillo.myapp.fileprovider/images/shareFile.mp4?caption=%23myappHashtag from pid=9630, uid=10093 requires the provider be exported, or grantUriPermission()
at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:608)
at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:483)
at android.content.ContentProvider$Transport.enforceFilePermission(ContentProvider.java:474)
at android.content.ContentProvider$Transport.openTypedAssetFile(ContentProvider.java:419)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:313)
at android.os.Binder.execTransact(Binder.java:565)
清单文件提供者:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.lucagrillo.myapp.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
【问题讨论】:
-
您在哪个版本的 Android 上进行测试?您能否也包含
FileProvider的清单条目? -
我正在 android 7.0 上进行测试。刚刚注意到它可以与除 Whatsapp 之外的许多应用共享
-
已添加清单文件提供程序
-
共享的 URI 以
shareFile.mp4?caption=%23myappHashtag结尾 - 这真的是您文件的名称吗?如果删除标题部分会怎样? -
删除 shareIntent.putExtra(Intent.EXTRA_TEXT... 结果 uri 没有 ?caption=%23myappHashtag,一切正常
标签: android securityexception android-fileprovider android-securityexception