当前位置: 首页 > 知识库问答 >
问题:

在Redmi Note 4上不工作的图库中选择图像

仲柏
2023-03-14

我试图从手机的画廊中选择一个图像,并将图像路径传递到另一个活动中,在那里它得到预览的用户。

我在另外两个设备上测试过这个(Moto E和一个叫酷派的东西?)他们似乎都工作得很好。

(调试Android源代码似乎不是一个可行的选择。)

在main活动中,在UI触发器上,我用以下代码启动了gallery picker:

private void dispatchPickPictureIntent() {
        Intent pickPictureIntent = new Intent(Intent.ACTION_PICK);
        pickPictureIntent.setType("image/*");
        startActivityForResult(pickPictureIntent, REQUEST_IMAGE_PICK);
    }

我这样处理结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_PICK && resultCode == RESULT_OK) {
        Uri selectedImage = data.getData();
        mCurrentPhotoPath = getRealPathFromURI(this, selectedImage);
        launchUploadActivity();
    }
}

private String getRealPathFromURI(Context context, Uri uri) {
    Cursor cursor = null;
    try {
        String [] proj = {MediaStore.Images.Media.DATA};
        cursor = context.getContentResolver().query(uri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    } finally {
        if (cursor != null)
            cursor.close();
    }
}

一旦获得存储在全局变量MCurrentPhotoPath中的文件路径,就会调用以下方法:

private void launchUploadActivity() {
    Intent intent = new Intent(HomeActivity.this, UploadActivity.class);
    intent.putExtra(getString(R.string.photo_path), mCurrentPhotoPath);
    startActivityForResult(intent, REQUEST_IMAGE_UPLOAD);
}
private void previewPhoto() {
    imageView.setVisibility(View.VISIBLE);
    BitmapFactory.Options options = new BitmapFactory.Options();

    // Avoid OutOfMemory Exception
    options.inSampleSize = 8;

    // This line returns a null, only on the Xiaomi device
    final Bitmap bitmap = BitmapFactory.decodeFile(photopath, options);

    imageView.setImageBitmap(bitmap);
}

现在我已经尝试调试这个问题,但是一旦我进入BitMapFactory的源代码,我就会发现Android Studio的一个似乎尚未解决的问题(https://stackoverflow.com/a/40566459/3438497),这使得它变得毫无用处。

任何关于我如何从这里开始的建议都将不胜感激。

共有1个答案

潘翊歌
2023-03-14

因此,我能够将问题缩小到一个不正确的文件路径。Uri to filepath函数没有在所有设备上获得所需的结果。

我使用了这里建议的方法:https://stackoverflow.com/a/7265235/3438497

并对代码进行了一点调整,以便在从gallery中选择图像时,我直接使用图像的Uri。

 类似资料:
  • 我创建了一个意图选择器,用于从图库或相机中选择任何图像。它在模拟器和其他设备上工作正常,但是当我使用redmi note 4测试它时,它显示“没有应用程序可以执行此操作”。 代码在这里- 请帮帮我!我错过什么了吗?

  • 问题内容: 我需要在手机中打开我的画廊,然后选择一张在活动中在imageview中打开的图片..没什么困难..但是我在模拟器(genymotion)中有完美的代码和thise代码可以运行..但是在小米Mi4上却没有。 打开画廊选择项目,什么也没有。 我没有更多的电话了:( 我尝试下载一些与此主题相关的示例,并且每个示例都是相同的。 您是否有一些从图库中选择图像并在imageview中显示的项目?如

  • 编辑:我调试了应用程序,并用初始化了。这消除了错误,但是现在ImageView没有得到更新,但是当我从Gallery中选择image时,它已经更新了。

  • 自动滚动是个问题 我使两个回收视图相互依赖的水平滚动和中心选择。 因此,我的问题是使用Notifydatasetchanged方法,并将recyclerView位置重置为0,它滚动选择范围,因为它返回了错误的索引。。。 当我想在更改数据后获取中心选择索引时。我使用下面的示例通过一些编辑来实现这一点。 滚动时获取RecycleView的中心可见项 我需要将第一个recyclerView适配器上的滚动

  • 我试图显示一个对话框,在那里按下图像按钮,然后从图库中选择图片或从相机中拍摄一些图片。我已经在努力选择一个图像并将其插入到正确的图像视图中。 现在,单击ImageButton(android:id=“@ id/imageSelect”)将显示对话框,然后选择从图库中选择,但它将图像插入(android:id=“@ id/imageSelect1),应该插入到(android:id=”@ id/im

  • 我的代码在下面..在中 在onActivityResult(int requestCode,int resultCode,Intent data)中