2017-05-30 9 views
2

私のアプリでデフォルトのカメラアプリ(またはデフォルトとして設定されているもの)をすばやく開くことができるようにします。しかし、これは、写真の部分を撮っているだけを表示するので、android.media.action.IMAGE_CAPTUREは使いたくありません。ただ、これを使わずにカメラアプリを開くだけです。私はこれが可能であることを知っています。私が使ったいくつかのギャラリーアプリ(Most notibale:Focus)は、問題のないカメラアプリを単に開くだけで、IMAGE_CAPTUREは使用していませんでした。action.Image_Captureを使用せずにデフォルトのカメラアプリを開く

+0

「android.media.action.IMAGE_CAPTURE」インテントを使用して、そのインテントをサポートするすべてのアプリケーションのリストを取得し、そのリストをフィルタリングし、パッケージのデフォルトの意図。 – Heinrich

+0

私はそれを試みましたが、アプリ全体を開くのではなく、実際の画像キャプチャインテントのみを表示します。開かれているカメラアプリに関係なく、画像キャプチャセクションのみが開きます。 – MJonesDev

+0

答えとしてさらに詳しい説明が追加されました。 – Heinrich

答えて

3

これはKotlinでPackageManager#resolveActivity(Intent)

を使用することによって達成することができる。

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) 

は(cameraIntentandroid.media.action.IMAGE_CAPTUREフィルタを使用して作成した意図である場合、contextは、現在のアプリケーションコンテキストとpackageManagerあるコンテキストのPackageManagerインスタンスであります。)

+1

可能な限り試してみますが、これを行うにはCanary Android Studioに更新する必要があります。ありがとう! – MJonesDev

+1

@MJonesDev Androidスタジオ2.3.2でKotlinプラグインをインストールするか、このコードをjavaに変換することができます。 –

+1

コードではKotlin専用の機能を使用していないため、Javaを使用することを躊躇しないでください。 – Heinrich

1

デフォルトのカメラアプリを開くには、以下のコードを使用してください。

関連する問題