我希望用户能够单击一个按钮,并可以选择图库或类似的应用程序或我在我的应用程序中拥有的相机活动,而不是内置的。我在这里和这里阅读了相关的答案。但是,我不想包含内置相机应用程序,但我想包含我的相机活动。
到目前为止,我已从我发布的两个链接中进行了以下设置:
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' arg in 有关,startActivityOnResult
因为我不确定该 arg 应该放什么。