ユーザーがボタンをクリックして、ギャラリーや同様のアプリ、または組み込みのアプリではなくアプリにあるカメラ アクティビティを選択できるようにしたいと考えています。関連する回答をこちらとこちらで読みました。ただし、組み込みのカメラ アプリは含めたくありませんが、カメラ アクティビティは含めたいと考えています。
投稿した2つのリンクから取得した、これまでに次の設定を行いました。
Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
Intent gallIntent = new Intent(Intent.ACTION_GET_CONTENT);
gallIntent.setType("image/*");
Intent camIntent = new Intent(UserEventsActivity.this,CameraActivity.class);
camIntent.setComponent(new ComponentName("MCamera", "Camera"));
List<Intent> yourIntentsList = new ArrayList<Intent>();
yourIntentsList.add(camIntent);
List<ResolveInfo> listGall = getApplicationContext().getPackageManager().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);
}
pickIntent.putExtra(Intent.EXTRA_INTENT, yourIntentsList.toArray(new Parcelable[]{}));
pickIntent.putExtra(Intent.EXTRA_TITLE, "Select Source");
startActivityForResult(pickIntent, 1);
この結果、関連のないアプリやサービスの大きなリストが作成され、そのほとんどが実際にはリスト内で何度も繰り返されています。さらに、私のカメラ アクティビティはその中にありません。必要な関連ギャラリー アプリを取得するだけでpickIntent.putExtra(Intent.EXTRA_INTENT,gallIntent)
、アクティビティを追加できません。
私が間違っていることについてのアイデアはありますか?
さらに、クリックしてもサービスが開きません。ただし、これは '1' 引数に関連している可能性がありますstartActivityOnResult
。その引数に何を入力すればよいか正確にはわかりません。