通过意图使用文件提供程序拒绝权限

时间:2017-08-26 08:01:46

标签: android android-intent android-contentprovider android-permissions android-fileprovider

我正在尝试从我的应用的缓存目录向文本消息应用发送位图。我正在使用文件提供程序向处理意图的应用程序授予临时权限。当我尝试发送意图并从意图选择器中选择默认的Android文本消息应用程序时,我的消息应用程序崩溃,我收到此错误。我尝试从意图选择器中选择其他应用程序,例如电子邮件和其他消息传递应用程序,它似乎工作正常,只与默认的文本消息应用程序崩溃。

java.lang.SecurityException: Permission Denial: reading android.support.v4.content.FileProvider uri content://com.example.brandon.emojimms2/shared_images/image.png from pid=9804, uid=10024 requires the provider be exported, or grantUriPermission()

Permission Denial 这是我分享意图的代码

private void shareImage()
{
    File imagePath = new File(mContext.getCacheDir(), "images");
    File newFile = new File(imagePath, "image.png");
    Uri contentUri = FileProvider.getUriForFile(mContext, "com.example.brandon.emojimms2", newFile);

    if (contentUri != null) {
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // temp permission for receiving app to read this file
        shareIntent.setDataAndType(contentUri, mContext.getContentResolver().getType(contentUri));
        shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
        startActivity(Intent.createChooser(shareIntent, "Choose an app"));
    }
}

我相当肯定我正确设置了文件提供程序,但是如果需要,这里是清单。 enter image description here

编辑:我刚做了一些测试,似乎早期apis上的手机上发生了短信应用程序的崩溃,但正在开发新的apis,如7.1。文本消息应用程序或您应该授予uri读取权限的方式是否发生变化?

1 个答案:

答案 0 :(得分:0)

试试这个:

Main.sublime-menu