Contentresolver 尝试写入文件但无法获得权限
Content Resolver Try to Write file but cant get Permisions
我的内容提供商尝试在外部存储上创建文件,但它需要 android.permission.WRITE_EXTERNAL_STORAGE
许可。我已经将此权限添加到 Manifest,但如果 Build.VERSION.SDK_INT >= 23
它无法创建文件。
所以我想 运行 在 ContentProvider 开始工作之前 activity 获得用户的许可。我该怎么做。谢谢
注意:我不是在问如何获得 运行时间权限。如何在 运行 宁内容提供商之前获得许可。如您所知,内容提供商在所有其他活动之前开始工作,我无法到达 ContextCompat..
如果您需要推迟 ContentProvider
的初始 运行 – 例如,直到您的应用获得某些 运行 时间权限请求,如本例 – 您可以在清单中将其声明为禁用,然后在适当的时候以编程方式启用它。
只需将清单中 <provider>
元素的 enabled
属性设置为 false
:
<provider
android:name=".MyProvider"
...
android:enabled="false" />
然后在准备好后使用PackageManager#setComponentEnabledSetting()
启用它;即,在您成功获得许可之后,在这种情况下。例如,从 Activity
处理 运行 时间权限请求:
ComponentName myProvider = new ComponentName(this, MyProvider.class);
getPackageManager().setComponentEnabledSetting(myProvider,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
我的内容提供商尝试在外部存储上创建文件,但它需要 android.permission.WRITE_EXTERNAL_STORAGE
许可。我已经将此权限添加到 Manifest,但如果 Build.VERSION.SDK_INT >= 23
它无法创建文件。
所以我想 运行 在 ContentProvider 开始工作之前 activity 获得用户的许可。我该怎么做。谢谢
注意:我不是在问如何获得 运行时间权限。如何在 运行 宁内容提供商之前获得许可。如您所知,内容提供商在所有其他活动之前开始工作,我无法到达 ContextCompat..
如果您需要推迟 ContentProvider
的初始 运行 – 例如,直到您的应用获得某些 运行 时间权限请求,如本例 – 您可以在清单中将其声明为禁用,然后在适当的时候以编程方式启用它。
只需将清单中 <provider>
元素的 enabled
属性设置为 false
:
<provider
android:name=".MyProvider"
...
android:enabled="false" />
然后在准备好后使用PackageManager#setComponentEnabledSetting()
启用它;即,在您成功获得许可之后,在这种情况下。例如,从 Activity
处理 运行 时间权限请求:
ComponentName myProvider = new ComponentName(this, MyProvider.class);
getPackageManager().setComponentEnabledSetting(myProvider,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);