2013-07-04 88 views
4

是否可以从应用程序获得对Android麦克风的独占访问权限?独家访问Android中的麦克风

我试图延长CSipSimple应用和我的目标是提高它的安全性。 我不知道如何处理的一个目标是阻止其他应用程序记录我的对话。

我从Play商店中下载应用,呼叫记录它叫,它,当我拨打一个电话号码自动获取,它是记录我的电话交谈。 这是我需要避免的。

那么,在我打电话时,是否可以阻止任何应用程序录制我的声音?

回答

1

我不知道很多关于Android,但如果获得对MIC独占访问是不可能的,你可以踩着一条路径是监视应用程序与麦克风的权限,如果存在的话,使用根关闭它们。或者当你的应用程序运行时,你可以移除这些应用程序的广播监听器,就像一些自动运行管理器一样。

+0

嗨。谢谢你的回答。我需要调查一下,Android是否允许监控可以访问麦克风并关闭麦克风的应用。我必须在这里做一些研究。再次感谢 –

+0

对不起评分。这一切都来自你的迹象 –

+0

...这个答案有绿色检查?XD – Josh

3

至于戒ç阿尔瓦提到,这样做的一个方法就是循环安装的应用程序,检查他们的权限,如果他们正在运行杀死他们。

为了重复安装应用

private void iterateInstalledApps() 
{ 
    PackageManager p = this.getPackageManager(); 
    final List <PackageInfo> appinstall = 
     p.getInstalledPackages(PackageManager.GET_PERMISSIONS); 
    for(PackageInfo pInfo:appinstall) 
    { 
     String[] reqPermission=pInfo.requestedPermissions; 
     if(reqPermission!=null) 
     { 
      for(int i=0;i<reqPermission.length;i++) 
      { 
       if (((String)reqPermission[i]).equals("android.permission.RECORD_AUDIO")) 
       { 
        killPackage(pInfo.packageName.toString()); 
        break; 
       } 
      } 
     } 
    }  
} 

为了杀一个包

private void killPackage(String packageToKill) 
{ 
    ActivityManager actvityManager = 
     (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
    final List<RunningAppProcessInfo> procInfos = 
     actvityManager.getRunningAppProcesses(); 
    for (RunningAppProcessInfo runningAppProcessInfo : procInfos) 
    { 
     if(runningAppProcessInfo.processName.equals(packageToKill)) 
     { 
      android.os.Process.sendSignal(runningAppProcessInfo.pid, 
           android.os.Process.SIGNAL_KILL); 
      actvityManager.killBackgroundProcesses(packageToKill); 
     }   
    }  
} 

您可以拨打iterateInstalledApps一个计时器,因为Android是重新启动现场的应用程序。如果你继续杀死应用程序,它将无法记录任何内容。在通话时使用呼叫记录器进行测试。

+0

看起来很肮脏的黑客:) –

1

有关Android的事情是,你不必直接在您的应用程序访问硬件(原生与否)的Android实现了服务器的管理它的硬件和您的应用程序连接到他们得到了什么这些服务器提供。

有从描述的媒体框架情况下,该模型机器人的家伙一个伟大的视频。 here是它的链接。

所以,不,你不能enfoce在这个模型准入限制,他这样说其他的答案代表了一种合理的方式,以确保麦克风没有被其他人访问。