如何修复android studio中的权限错误
我尝试拍照时运行应用程序时出错 2019-10-30 07:55:18.411578-578/com.example.myapplication E/AndroidRuntime:致命异常:主 进程:com.example.myapplication,PID:578 java.lang.IllegalArgumentException:找不到具有fssdfs权限的提供程序的元数据如何修复android studio中的权限错误,android,Android,我尝试拍照时运行应用程序时出错 2019-10-30 07:55:18.411578-578/com.example.myapplication E/AndroidRuntime:致命异常:主 进程:com.example.myapplication,PID:578 java.lang.IllegalArgumentException:找不到具有fssdfs权限的提供程序的元数据 这给了我一个错误,当我点击按钮在我的应用程序中拍照时,应用程序崩溃。请帮忙 我认为您错过了添加到Manifest.X
这给了我一个错误,当我点击按钮在我的应用程序中拍照时,应用程序崩溃。请帮忙 我认为您错过了添加到Manifest.XML文件中的这段代码,所以请尝试一下,它可能会对您有所帮助
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS" <-- HERE!!!
android:resource="@xml/provider_paths" />
您面临的问题是,您在清单中声明的内容提供商权限与您向提供商请求URI时使用的权限不同
常见原因是库硬编码了自己的提供程序权限,并且提供程序权限字符串通常不匹配
为了解决这些问题,同时满足提供者权限应该是唯一的条件,可以使用应用程序id作为提供者权限,或者将应用程序id变量与提供者权限的字符串连接起来。解决方案详述如下:
在清单中,您可以将其用作提供程序:
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}"
android:exported="false"
android:grantUriPermissions="true"
tools:replace="android:authorities">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
或者,如果您仍然希望为您的机构提供更多定制,您也可以这样做:
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.my_custom_addition"
android:exported="false"
android:grantUriPermissions="true"
tools:replace="android:authorities">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
使用第二种方法的缺点是,您必须始终记住自定义权限的确切字符串
我将推荐第一种方法,尽管当您的应用程序中有多个内容提供商时,后一种方法更可取。这是否回答了您的问题?好的,谢谢你的帮助。当我们放置tools:replace=“android:authorities”时,工具有错误,没有界限。“名称空间”工具“未绑定”您必须在清单元素中定义工具名称空间,如下所示:if(photoFile!=null){String pathToFile=photoFile.getAbsolutePath();Uri photoURI=FileProvider.getUriForFile(MainActivity.this,“fssdfs”,photoFile);takePic.putExtra(MediaStore.EXTRA_OUTPUT,photoURI);startActivityForResult(takePic,1);//进行中需要修复}您应该进行测试运行,以验证这一点。在文件提供程序端,如果您的权限定义为“fssdfs”,则表示您没有任何与文件提供程序有关的问题。
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.my_custom_addition"
android:exported="false"
android:grantUriPermissions="true"
tools:replace="android:authorities">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
Uri contentUri = FileProvider.getUriForFile(context, context.getPackageName()+".my_custom_addition", file);