在KitKat之前(或在新Gallery之前)Intent.ACTION_GET_CONTENT返回这样的URI
内容://媒体/外部/图像/媒体/ 3951.
使用ContentResolver和quering
MediaStore.Images.Media.DATA返回文件URL.
但是在KitKat中,Gallery会返回一个URI(通过"Last"),如下所示:
内容://com.android.providers.media.documents/document/image:3951
我该如何处理?
android android-intent android-contentresolver android-gallery
我正在使用内置的Android图像选择器,如下所示:
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
m_activity.startActivityForResult(photoPickerIntent, PHOTO_PICKER_ID);
Run Code Online (Sandbox Code Playgroud)
有没有办法限制它只显示本地可用的文件.在我的设备上,它目前正在拾取Picasa缩略图,我想要排除设备上实际不存在的所有图像.
我正在尝试使用内置图库获取图像.它在模拟器中运行良好,它只打开图库但在真实设备上它给我多个选择其中一个是文件管理器,这使我能够选择任何类型的文件甚至apk文件当然应用程序崩溃后,我有这个代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch(requestCode){
case SELECT_PICTURE:
Uri selectedImageUri = data.getData();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
}
我是Android的新手,我要求在API级别19以下的设备上选择文件.
我试过了
private void chooseFile() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
intent.setType("application/pdf|file");
} else {
intent.setType("image/*|application/pdf");
}
startActivityForResult(intent, PICKFILE_REQUEST_CODE);
}
Run Code Online (Sandbox Code Playgroud)
现在我不希望Google驱动器作为选项出现,我想要文件管理器作为选项.我想用意图来做这件事.
任何人都可以建议我如何实现这一目标?