首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不抛出SecurityException的情况下在运行时检查权限?

如何在不抛出SecurityException的情况下在运行时检查权限?
EN

Stack Overflow用户
提问于 2011-08-26 18:58:12
回答 9查看 128.7K关注 0票数 98

我设计了一个函数,可以从SD获取/设置资源,如果从sd找不到资源,则从Asset获取资源,如果可能,将资产写回SD

此函数可以通过方法调用检查SD是否已安装并可访问...

代码语言:javascript
复制
boolean bSDisAvalaible = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);

我设计的函数可以从一个应用程序(项目)使用到另一个应用程序(有或没有android.permission.WRITE_EXTERNAL_STORAGE)

然后,我想检查当前应用程序是否具有此特定权限,而不使用SecurityException。

是否存在一种在运行时查询当前定义的权限的“好”方式?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-08-26 19:07:10

您可以使用Context.checkCallingorSelfPermission()函数来实现此目的。下面是一个示例:

代码语言:javascript
复制
private boolean checkWriteExternalPermission()
{
    String permission = android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
    int res = getContext().checkCallingOrSelfPermission(permission);
    return (res == PackageManager.PERMISSION_GRANTED);            
}
票数 204
EN

Stack Overflow用户

发布于 2013-04-13 08:33:33

这也是另一种解决方案。

代码语言:javascript
复制
PackageManager pm = context.getPackageManager();
int hasPerm = pm.checkPermission(
    android.Manifest.permission.WRITE_EXTERNAL_STORAGE, 
    context.getPackageName());
if (hasPerm != PackageManager.PERMISSION_GRANTED) {
   // do stuff
}
票数 53
EN

Stack Overflow用户

发布于 2014-02-13 00:37:30

您还可以使用以下命令:

代码语言:javascript
复制
private boolean doesUserHavePermission()
{
    int result = context.checkCallingOrSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
    return result == PackageManager.PERMISSION_GRANTED;
}
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7203668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档