gpt4 book ai didi

android - onActivityResult() 中结果代码code为-1且返回intent为null

转载 作者:搜寻专家 更新时间:2023-11-01 08:38:40 24 4
gpt4 key购买 nike

我正在尝试通过以下代码初始化图像选择器对话框: Intent 选择器Intent = null;

    List<Intent> intentList = new ArrayList<>();

Intent pickIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePhotoIntent.putExtra("return-data", true);
takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(getTempFile(context)));
intentList = addIntentsToList(context, intentList, pickIntent);
intentList = addIntentsToList(context, intentList, takePhotoIntent);

if (intentList.size() > 0) {
chooserIntent = Intent.createChooser(intentList.remove(intentList.size() - 1), "");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentList.toArray(new Parcelable[intentList.size()]));
}
startActivityForResult(chooserIntent, PICK_IMAGE_ID);

但是有

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case PICK_IMAGE_ID:
Bitmap bitmap = ImagePicker.getImageFromResult(this, resultCode, data);
currentImageButton.setImageDrawable(new BitmapDrawable(bitmap));
break;
default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
}

我得到 null Intent 和 -1 resultCode

我已经在其中添加了显示权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />

代码在大多数设备上运行良好,但在 samsung duos 上运行失败。我哪里错了?

UPD

activity

image picker class

最佳答案

没关系,你会得到 -1 - 这意味着 public static final int RESULT_OK (参见 Activity 类)。

Null作为 Intent ,您已经在此处定义了输出 uri:

i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(getTempFile(context)));

(即您可以只使用 Uri ,一旦您得到确认,捕获就完成了)

关于图像选取,我是这样做的(这几乎是一样的,正如谷歌在 Taking Photos Simply 文章中所建议的那样):

.....
private Uri capturedImageURI;
.....

capturedImageURI = Uri.fromFile(createImageFile());
final Intent captureIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageURI);
Intent chooserIntent = Intent.createChooser(new Intent(Intent.ACTION_PICK).setType("image/*"), "Select Picture");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Parcelable[] { captureIntent });
startActivityForResult(chooserIntent, 42);

.....

public File createImageFile() {
File imageStorageDir = new File(
Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES)
, "MyAppPictures");

if (!imageStorageDir.exists()) {
imageStorageDir.mkdirs();
}

return new File(
imageStorageDir + File.separator + "IMG_"
+ String.valueOf(System.currentTimeMillis())
+ ".jpg");
}

.....

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
if (data != null) {
capturedImageURI = data.getData();
}
((ImageView)findViewById(R.id.capturedImageView)).setImageURI(capturedImageURI);
}
}

注意!您需要这些权限才能使其正常工作:

<uses-feature android:name="android.hardware.camera"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Android 6.0 中,您必须先检查权限,然后才能从外部存储获取数据。

关于android - onActivityResult() 中结果代码code为-1且返回intent为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34469652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com