目前使用硬件功能的所有应用的访问列表

时间:2017-11-16 08:38:21

标签: android security camera

是否有可能使用某些硬件元素(如Android中的相机或麦克风)访问应用程序和进程的数量甚至名称?

1 个答案:

答案 0 :(得分:0)

解决这个问题的方法是首先找到具有功能的应用,然后找到相应的pid。如果您不是root用户,我认为不可能获得系统服务。也很难得到pid。 看看这个github link。它仅适用于Android N.

应用需要声明在其清单中使用硬件的权限。 例如,android.permission.RECORD_AUDIO记录音频或android.permission.CAMERA使用相机。

有关权限的详细信息,请查看此官方Google doc

String[] permissions = context.getPackageManager().getPackageInfo("Enter Your PackageName Here", PackageManager.GET_PERMISSIONS)
.requestedPermissions

for (String permission : permissions) {
    if(permission.equals("hardware permission like camera or record audio")){
        //Do Stuff here
       //Use the methods given in the gihtub link above to get PID  
      //Below code is take from the github link given above 
        List<AndroidAppProcess> processes =AndroidProcesses.getRunningAppProcesses();

        for (AndroidAppProcess process : processes) {
          // Get some information about the process
          String processName = process.name;

          Stat stat = process.stat();
          int pid = stat.getPid();
          int parentProcessId = stat.ppid();
          long startTime = stat.stime();
          int policy = stat.policy();
          char state = stat.state();

          Statm statm = process.statm();
          long totalSizeOfProcess = statm.getSize();
          long residentSetSize = statm.getResidentSetSize();

          PackageInfo packageInfo = process.getPackageInfo(context, 0);
          String appName = packageInfo.applicationInfo.loadLabel(pm).toString();
        }
    }
}

手动,如果你想检查运行adb shell并通过top检查相应的uid是否正在运行。