[解決済み] 画像にカメラまたはギャラリーを選択できるようにする。
質問
私がやろうとしていることはとても簡単なことのようですが、数日検索してもよくわかりません。
複数(最大5枚)の画像を選択できるアプリケーションを持っています。このアプリケーションでは
ImageView
. ユーザが
ImageView
を選択できるようにしたいと思います。
- ギャラリーから画像を選択するか
- カメラで画像を撮影する。
を使うことから始めました。
ACTION_GET_CONTENT
インテントを使用すると、ギャラリーにアクセスするのに便利です。そこで、次に
ACTION_PICK_ACTIVITY
インテントを使用して、ユーザーがカメラまたはギャラリーを選択できるようにします。
Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
Intent gallIntent=new Intent(Intent.ACTION_GET_CONTENT);
gallIntent.setType("image/*");
Intent camIntent = new Intent("android.media.action.IMAGE_CAPTURE");
pickIntent.putExtra(Intent.EXTRA_INTENT, camIntent);
pickIntent.putExtra(Intent.EXTRA_INTENT, gallIntent)
pickIntent.putExtra(Intent.EXTRA_TITLE, "Select Source");
startActivityForResult(pickIntent, IMAGE_SELECTOR);
を1つしか追加できないようです。
EXTRA_INTENT
. メニューは予想通り表示されますが、オプションはGalleryとFilesのみです(Cameraはありません)。
私が見逃している、より良い/より簡単な方法はありますか?助けてくれてありがとうございます。
解決方法は?
両方のインテント解決結果をマージする独自のチョーサーダイアログを作成する必要があります。
これを行うには、PackageManagerに以下のような問い合わせをする必要があります。 PackageManager.queryIntentActivities() の両方のオリジナルインテントを取得し、このように取得したアクティビティごとに1つの新しいインテントを持つ、可能なインテントの最終リストを作成します。
List<Intent> yourIntentsList = new ArrayList<Intent>();
List<ResolveInfo> listCam = packageManager.queryIntentActivities(camIntent, 0);
for (ResolveInfo res : listCam) {
final Intent finalIntent = new Intent(camIntent);
finalIntent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
yourIntentsList.add(finalIntent);
}
List<ResolveInfo> listGall = packageManager.queryIntentActivities(gallIntent, 0);
for (ResolveInfo res : listGall) {
final Intent finalIntent = new Intent(gallIntent);
finalIntent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
yourIntentsList.add(finalIntent);
}
(ここに直接書いたので、コンパイルできないかもしれません)
そして、リストからカスタムダイアログを作成するための詳細な情報は、以下を参照してください。 https://developer.android.com/guide/topics/ui/dialogs.html#AlertDialog
関連
-
adb シェルがデバイスのオフラインを求めるプロンプトを表示する
-
Android端末にADBが接続できない!を解決。理由: デバイスが認証されていない!
-
[android studio]com.android.ide.common.process.ProcessException: aaptの実行に失敗しました
-
android studioが "The activity must be exported or contain an intent-filter" と表示され実行される。
-
Androidプロセス生存のためのソリューション
-
Android カスタムスピナーコントロールのドロップダウン・ボックスの実装
-
アンドロイドの遅延実行のいくつかの方法
-
アンドロイドにおけるトークンの利用
-
[解決済み] Bitmapオブジェクトに画像を読み込む際にOutOfMemoryが発生する問題
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Androidのadbデバイスがオフラインであることが判明
-
Android.mk:7: *** セパレータがありません。
-
[android studio]com.android.ide.common.process.ProcessException: aaptの実行に失敗しました
-
android studioが "The activity must be exported or contain an intent-filter" と表示され実行される。
-
アプリケーションがメインスレッドで過剰に作業している可能性があります。
-
android exception - aapt.exe has stopped working.
-
Android カスタムスピナーコントロールのドロップダウン・ボックスの実装
-
Android ProgressBarのスタイルカラーを変更する
-
android bluetooth--Bluetooth on、検索、ペアリング、接続
-
アンドロイドスタジオソフトウェア使用詳細説明書