1

我與一些遺留代碼工作,相機使用把那隱含的意圖打開

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

這很好開的應用程序。但是,當相機應用程序處於打開狀態時(我不確定完全是爲什麼),某些代碼正在運行,但是如果相機應用程序位於用戶面前,它會執行某些操作。 「頂」的應用檢索,然後來檢查,如果相機在上面的代碼是:

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

這是工作的罰款一段時間,但我們一直在使用新的設備,其默認的相機應用測試名稱不是「相機」,而是其他名稱(如果您必須知道,則爲「org.codeaurora.snapcam」)。這種方法似乎很脆弱,因爲任何設備都可以有任何默認的相機應用程序。

因此,我的問題是,當我通過ACTION_IMAGE_CAPTURE意圖啓動相機應用程序時,如何才能找到實際打開的應用程序?

+1

在[此帖]細節(http://stackoverflow.com/questions/4675405/android-intent-defaults-detect-and-clear )可能對使用'PackageManager'有用。 –

回答

1

經過一番搜索,我找到了解決辦法:

activity.getPackageManager().resolveActivity(cameraIntent, PackageManager.MATCH_DEFAULT_ONLY).activityInfo.packageName;