内容解析程序尝试写入文件,但无法获取权限 [英] Content Resolver Try to Write file but cant get Permisions

查看:0
本文介绍了内容解析程序尝试写入文件,但无法获取权限的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的内容提供商尝试在外部存储上创建文件,但它需要android.permission.WRITE_EXTERNAL_STORAGE

权限。我已将此权限添加到清单,但如果Build.VERSION.SDK_INT >= 23它无法创建文件。

因此,我希望在ContentProvider开始工作之前运行一个活动,以获得用户的许可。我怎么能做到这一点。谢谢。

注意:我不是在问如何获得运行时权限。如何在运行内容提供程序之前获得许可。如您所知,内容提供商在所有其他活动之前开始工作,我无法联系到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);

这篇关于内容解析程序尝试写入文件,但无法获取权限的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆