获取隐式Intent打开的应用

时间:2017-04-04 14:51:14

标签: android android-intent android-camera android-camera-intent

我正在使用一些遗留代码,并使用

打开相机
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

哪个好。但是,有些代码在相机应用程序打开时运行(我不确定为什么),但如果相机应用程序在用户面前,它会执行某些操作。检索“顶部”应用程序,然后检查相机是否在顶部的代码是:

 boolean isCameraOnTop = topName.toLowerCase().indexOf("camera") != -1;

这个工作正常一段时间但是我们一直在测试一个新设备,其默认的相机应用程序名称不是“相机”,而是其他东西(“org.codeaurora.snapcam”,如果你必须知道)。这种方法似乎很脆弱,因为任何设备都可以有任何默认的相机应用程序。

所以,我的问题是,当我通过ACTION_IMAGE_CAPTURE意图启动相机应用程序时,如何才能找到实际打开的应用程序?

1 个答案:

答案 0 :(得分:1)

经过一番搜索,我找到了解决方案:

activity.getPackageManager().resolveActivity(cameraIntent, PackageManager.MATCH_DEFAULT_ONLY).activityInfo.packageName;
相关问题