Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从我的android应用程序中的图片应用程序访问图片_Android_Android Image - Fatal编程技术网

从我的android应用程序中的图片应用程序访问图片

从我的android应用程序中的图片应用程序访问图片,android,android-image,Android,Android Image,就像iPhone有一个UIImagePickerController让用户访问存储在设备上的图片一样,Android SDK中是否也有类似的控件 谢谢。您可以使用startActivityForResult,传入一个意图,该意图描述您希望完成的操作以及执行该操作的数据源 幸运的是,Android包含了一个拾取东西的操作:Intent.Action\u PICK和一个包含图片的数据源: android.provider.MediaStore.Images.Media.INTERNAL\u CONT

就像iPhone有一个UIImagePickerController让用户访问存储在设备上的图片一样,Android SDK中是否也有类似的控件


谢谢。

您可以使用
startActivityForResult
,传入一个意图,该意图描述您希望完成的操作以及执行该操作的数据源

幸运的是,Android包含了一个拾取东西的操作:
Intent.Action\u PICK
和一个包含图片的数据源:
android.provider.MediaStore.Images.Media.INTERNAL\u CONTENT\u URI
用于本地设备或 SD卡上图像的android.provider.MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI

调用
startActivityForResult
传入拾取操作和您希望用户从中选择的图像,如下所示:

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);
然后覆盖ActivityResult上的
以侦听用户所做的选择

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == SELECT_IMAGE)
    if (resultCode == Activity.RESULT_OK) {
      Uri selectedImage = data.getData();
      // TODO Do something with the select image URI
    } 
}
拥有图像Uri后,您可以使用它访问图像,并对其执行任何需要执行的操作。

您还可以执行以下操作:

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1);

这将在所有存储中拾取图像。

只是对Reto给出的答案的更新。可以执行以下操作来缩放图像:

private String getPath(Uri uri) {
String[]  data = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(context, uri, data, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}

我的onactivityresult在使用此功能时未被调用。。。有什么建议吗?我设置了外部存储权限,以查看如何准确地从selectedImage变量检索文件路径,看看这个答案:我相信你要找的是一个名为android.provider的内容提供商和一个名为MediaStore的类。图片有可能使相机显示为这里的附加源吗?如果你将静态1传递给startActivityForResult,你如何识别onActivityResult()中的请求代码?