如何获得安装的应用程序的权限如何获得、应用程序、权限

2023-09-13 00:54:01 作者:甘泉制酒

我需要开发一个Android应用程序,以检测恶意软件。

我要寻找的基础上使用已安装的所有应用程序的权限制定本。请让我知道如何识别其他应用程序使用的权限

解决方案

您可以得到这样的所有已安装的应用程序的权限。

     在获取所有已安装的应用程序   遍历应用程序   在获取每个应用程序的权限列表   遍历每个权限   

  PackageManager PM = getPackageManager();
名单< ApplicationInfo>包= pm.getInstalledApplications(PackageManager.GET_META_DATA);

对于(ApplicationInfo applicationInfo:包){
   Log.d(测试,应用程序:+ applicationInfo.name +套餐+ applicationInfo.packageName);

   尝试 {
      PackageInfo packageInfo = pm.getPackageInfo(applicationInfo.packageName,PackageManager.GET_PERMISSIONS);

      //获取权限
      的String [] requestedPermissions = packageInfo.requestedPermissions;

      如果(requestedPermissions!= NULL){
         的for(int i = 0; I< requestedPermissions.length;我++){
            Log.d(测试,requestedPermissions [I]);
         }
      }
   }赶上(的NameNotFoundException E){
      e.printStackTrace();
   }
}
 

让Android应用程序申请获取ROOT权限

I need to develop an android application to detect malwares.

I am looking to develop this based on permissions used by all the applications installed. Please let me know how to identify the permissions used by other applications

解决方案

You can get all installed applications permissions like this.

Get all installed applications Iterate over the applications Get each application permissions list Iterate over the each permission

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

      //Get Permissions
      String[] requestedPermissions = packageInfo.requestedPermissions;

      if(requestedPermissions != null) {
         for (int i = 0; i < requestedPermissions.length; i++) {
            Log.d("test", requestedPermissions[i]);
         }
      }
   } catch (NameNotFoundException e) {
      e.printStackTrace();
   }
}