在不使用action.Image_Capture的情况下打开默认相机应用程序

我希望用户能够在我的应用程序中快速打开默认的相机应用程序(或默认设置)。 但是,我不想使用android.media.action.IMAGE_CAPTURE,因为这只会显示应用程序的照片拍摄部分。 我只想简单地打开相机应用程序,而不使用这个。 我知道这是可能的,因为我使用过的几个图库应用程序(Most notibale:Focus)只能简单地打开相机应用程序而没有问题,并没有使用IMAGE_CAPTURE。

这可以通过使用PackageManager#resolveActivity(Intent)

在Kotlin:

 val info: ResolveInfo? = packageManager .resolveActivity(cameraIntent); if (info == null) { // No camera app installed. return } // Documentation says at least one of the three infos is not-null: val app: ApplicationInfo = info.activityInfo?.applicationInfo ?: info.serviceInfo?.applicationInfo ?: info.providerInfo!!.applicationInfo val launch: Intent? = packageManager .getLaunchIntentForPackage(app.packageName) if (launch == null) { // Camera app has no default intent. return } // Launch the camera intent's // resolved app's default activity. context.startActivity(launch) 

(其中cameraIntent是使用android.media.action.IMAGE_CAPTURE过滤器创建的Intent, context是当前的应用上下文, packageManager是上下文的PackageManager实例。)

如果你想打开默认的相机应用程序,使用下面的代码

 Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivity( getPackageManager().getLaunchIntentForPackage( intent.resolveActivity(getPackageManager()).getPackageName())); 
Interesting Posts