检查哪个应用正在做什么

时间:2013-07-01 09:39:45

标签: android android-intent android-permissions

有没有办法从我的应用程序中检查哪个应用程序在android中做了什么。 我的意思是

  • 如果有任何应用正在阅读通话记录
  • 如果有任何应用正在阅读msg
  • 如果有任何应用从服务器读取数据
  • 如果有任何应用访问gps,
  • 如果有任何应用播放音乐

请提出任何建议,我们将不胜感激。

1 个答案:

答案 0 :(得分:3)

您可以做的最好的事情是检查某个应用是否具有执行每项任务所需的权限。以下代码段检索所有已安装应用程序的权限:

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

除此之外,仅仅因为应用有权做某事并不意味着它正在这样做。某些权限涵盖多个用户,应用程序可能正在使用其访问权限的一部分。