Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复android studio中的权限错误_Android - Fatal编程技术网

如何修复android studio中的权限错误

如何修复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

我尝试拍照时运行应用程序时出错

2019-10-30 07:55:18.411578-578/com.example.myapplication E/AndroidRuntime:致命异常:主 进程:com.example.myapplication,PID:578 java.lang.IllegalArgumentException:找不到具有fssdfs权限的提供程序的元数据


这给了我一个错误,当我点击按钮在我的应用程序中拍照时,应用程序崩溃。请帮忙

我认为您错过了添加到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);