我正在尝试从我的应用的缓存目录向文本消息应用发送位图。我正在使用文件提供程序向处理意图的应用程序授予临时权限。当我尝试发送意图并从意图选择器中选择默认的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()
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"));
}
}
我相当肯定我正确设置了文件提供程序,但是如果需要,这里是清单。
编辑:我刚做了一些测试,似乎早期apis上的手机上发生了短信应用程序的崩溃,但正在开发新的apis,如7.1。文本消息应用程序或您应该授予uri读取权限的方式是否发生变化?
答案 0 :(得分:0)
试试这个:
Main.sublime-menu