你如何限制意图选择器只显示特定的应用程序?

时间:2014-02-12 21:29:20

标签: android android-intent camera start-activity

目的: 我想打开一个意图选择器,只显示本机Camera应用程序和本机Gallery应用程序。

我现在拥有的东西: 我有原生相机应用程序,原生图库应用程序和所有其他可以打开文件的应用程序(太空人文件管理器,照片应用程序......等)

那么,我有什么遗漏的吗?这有助于限制我的意图选择器只显示我需要的应用程序? (仅限图库和相机)?

感谢您的阅读,并感谢任何意见或建议。

        Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT,null);
        galleryIntent.setType("image/*");
        galleryIntent.setClassName("com.google.android.gallery3d", "com.android.gallery3d.app.Gallery");

        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        Intent chooser = new Intent(Intent.ACTION_CHOOSER);
        chooser.putExtra(Intent.EXTRA_INTENT, galleryIntent);
        chooser.putExtra(Intent.EXTRA_TITLE, "Select a Photo");
        Intent[] intentArray =  {cameraIntent};
        chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
        startActivityForResult(chooser,CAMERA_CODE);

1 个答案:

答案 0 :(得分:1)

正如@ SamN-a所写,通常不可能。使用硬编码的类名称并不是一个好习惯:即使您只查看安装了标准GAPPS的设备,也不能保证所有设备都存在这些名称。

但优良作法是显示自定义选择器而不是系统默认值,并在操作栏上直接提供最相关(例如上次使用)选项。