【问题标题】:Permissions used by other app in androidandroid中其他应用程序使用的权限
【发布时间】:2014-04-04 17:01:39
【问题描述】:

我想在我的 Android 应用中添加一项功能,该功能可以检查其他已安装应用所使用的权限。例如: - 我的应用程序检查其他已安装的应用程序权限,它们使用的是什么?

 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();
}}} 

}

这是工作代码,它提供了所有应用程序使用的所有权限的完整列表。 但我的问题是如何特别知道哪个应用程序使用了哪个权限?

请帮助我并给我一些想法。

【问题讨论】:

    标签: permissions


    【解决方案1】:

    这是工作代码:

    PackageManager mPm = getPackageManager();   
    List <PackageInfo> appList=mPm.getInstalledPackages(PackageManager.GET_PERMISSIONS|PackageManager.GET_RECEIVERS|
              PackageManager.GET_SERVICES|PackageManager.GET_PROVIDERS);
    
    for (PackageInfo pi : appList) {
        System.out.println("Process Name: "+pi);
        // Do not add System Packages
        if ((pi.requestedPermissions == null || pi.packageName.equals("android")) || 
                (pi.applicationInfo != null && (pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)) 
            continue;
    
        for (String permission : pi.requestedPermissions) {
            //Map<String, String> curChildMap = new HashMap<String, String>();
            //System.out.println("############     "+permission);
    
            try {
                PermissionInfo pinfo = mPm.getPermissionInfo(permission, PackageManager.GET_META_DATA);
                CharSequence label = pinfo.loadLabel(mPm);
                CharSequence desc = pinfo.loadDescription(mPm);
                System.out.println("$$$$$ "+label+"!!!!!! "+desc);
    
            } catch (NameNotFoundException e) {
                Log.i(TAG, "Ignoring unknown permission " + permission);
                continue;
           }
        }
    

    【讨论】:

    • 这将授予所有已安装应用程序使用的权限,但现在我想获得在后台运行的应用程序使用的权限??怎么办??
    • 嘿,谁能告诉我如何知道只有正在运行的应用程序使用的权限??
    • 因为上面的答案是正确的,但它赋予了所有已安装应用程序的权限。因为我只想获得在后台运行的应用程序的权限。 ??
    猜你喜欢
    • 2021-04-05
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 2013-01-02
    • 2018-09-24
    相关资源
    最近更新 更多