【问题标题】:How to get if an app requests a permission?如果应用请求权限,如何获取?
【发布时间】:2019-03-02 08:36:53
【问题描述】:

早安

我正在寻找一种方法来了解应用程序是否在给定包名称的情况下请求特定权限以及是否授予该权限(通过设置)。我正在寻找类似的东西:

if(//com.package.name requests Manifest.permission.camera and that permission is granted)
{//do something}

我已经阅读了这个帖子http://stackoverflow.com/questions/31535088/android-m-programmatically-revoke-permissions,但它没有找到一种方法来知道应用程序是否真的在请求某个权限以及它是否被授予。

提前致谢

问候

【问题讨论】:

    标签: java android permissions manifest


    【解决方案1】:

    在您的活动中使用以下代码:

    我创建了StringBuffer appNameAndPermissions = new StringBuffer(); 来附加所有应用程序和权限信息。

    一切正常。我已经测试过了。如果您有任何问题,请告诉我。

    StringBuffer appNameAndPermissions = new StringBuffer();
    PackageManager pm = getPackageManager();
    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
    
    for (ApplicationInfo applicationInfo : packages) {
        Log.d("test", "App: " + applicationInfo.name + " Package: " + applicationInfo.packageName);
    try {
        PackageInfo packageInfo = pm.getPackageInfo(applicationInfo.packageName, PackageManager.GET_PERMISSIONS);
        appNameAndPermissions.append(packageInfo.packageName+"*******:\n");
    
        //Get Permissions
        String[] requestedPermissions = packageInfo.requestedPermissions;
        if(requestedPermissions != null) {
            for (int i = 0; i < requestedPermissions.length; i++) {
                Log.d("test", requestedPermissions[i]);
                appNameAndPermissions.append(requestedPermissions[i]+"\n");
            }
        appNameAndPermissions.append("\n");
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
    

    在您的 AndroidManifest.xml 文件中使用以下权限:

    &lt;uses-permission android:name="android.permission.GET_TASKS"/&gt;

    来源和更多答案here

    【讨论】:

    • 感谢您的回答,我会尽快测试并提供反馈!
    猜你喜欢
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多