在我的应用程序中,我试图只打开默认的内置图库应用程序,甚至没有照片应用程序和其他文件浏览器应用程序。点击按钮将直接登陆画廊,我该怎么做?在Android中如何使用intent打开系统内置的gallery应用程序?
我的代码 'Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(“image/*”); startActivityForResult(intent,PICK_IMAGE);'
在我的应用程序中,我试图只打开默认的内置图库应用程序,甚至没有照片应用程序和其他文件浏览器应用程序。点击按钮将直接登陆画廊,我该怎么做?在Android中如何使用intent打开系统内置的gallery应用程序?
我的代码 'Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(“image/*”); startActivityForResult(intent,PICK_IMAGE);'
试试这个...
private int PICK_IMAGE_REQUEST = 1;
tvGallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
// Show only images, no videos or anything else
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
// Always show the chooser (if there are multiple options available)
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
});
使用许可在的Android清单文件
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
尝试像这样
清单文件Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);//
startActivityForResult(Intent.createChooser(intent, "Select Picture"),PICK_IMAGE);
OnActivityResult用于获取图像
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE)
{
if (resultCode == Activity.RESULT_OK)
{
if (data != null)
{
try
{
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), data.getData());
} catch (IOException e)
{
e.printStackTrace();
}
}
} else if (resultCode == Activity.RESULT_CANCELED)
{
Toast.makeText(getActivity(), "Cancelled", Toast.LENGTH_SHORT).show();
}
} }
添加权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
试试这个: -
公共静态最终诠释GALLERY_PICTURE = 1; private String selectedImagePath = null;
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select File"), GALLERY_PICTURE);
onActivityResult(): -
if (requestCode == GALLERY_PICTURE && resultCode == RESULT_OK) {
selectedImagePath = getRealPathFromURI_API19(this, data.getData());
Log.e("gallery path", selectedImagePath);
}
@SuppressLint("NewApi")
public static String getRealPathFromURI_API19(Context context, Uri uri) {
String filePath = "";
String wholeID = DocumentsContract.getDocumentId(uri);
String id = wholeID.split(":")[1];
String[] column = {MediaStore.Images.Media.DATA};
String sel = MediaStore.Images.Media._ID + "=?";
Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
column, sel, new String[]{id}, null);
int columnIndex = cursor.getColumnIndex(column[0]);
if (cursor.moveToFirst()) {
filePath = cursor.getString(columnIndex);
}
cursor.close();
return filePath;
}
不工作。没有错误,但它显示文件选择器...我不想要that.on按钮点击它应该直接在画廊 – droidgeek
你应该知道,一些设备上运行棒棒糖和以上的Android版本不再存在图库。照片应用程序是替代品,这就是为什么我们现在使用文件选择器。但如果你仍然需要打开直接画廊你可以使用这个: - 意图galleryIntent =新意图(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media .EXTERNAL_CONTENT_URI); startActivity(galleryIntent); –
[从Android的意图打开多媒体应用程序(的可能的复制http://stackoverflow.com/questions/16928727/open-gallery-app-from- android-intent) –
@maxost不,我想直接打开内置的手机图库应用程序,而不是任何其他应用程序,如照片。 – droidgeek
有大约20亿个Android设备,由数百个制造商的数千种设备模型组成。没有必要有一个“默认内置画廊”。那些做的将会有不同的,因为制造商通常会自己定制“定制画廊”。没有确定的方式来识别这样的应用程序,更不用说启动它了。 – CommonsWare