是否有可能使用某些硬件元素(如Android中的相机或麦克风)访问应用程序和进程的数量甚至名称?
答案 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是否正在运行。