代码之家  ›  专栏  ›  技术社区  ›  Sate Wedos

ImageView无法在Android 6.0.1智能手机上显示gallery中的图像

  •  0
  • Sate Wedos  · 技术社区  · 8 年前

    我想将图像从Gallery显示到ImageView。在emulator Android 4.2.2中,我的代码可以按预期运行。但当我插入智能手机Android 6.0.1时,无法将图像显示到ImageView 这是我的代码:

    //Open gallery code
    private void showFileChooser() {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
        }
    
    
    //Set ImageView code
    @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
    
                filePath = data.getData();
                try {
                    imageView = (ImageView) getActivity().findViewById(R.id.imageView);
                    bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), filePath);
                    imageView.setImageBitmap(bitmap);
    
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
    

    我的问题。这是因为我的android版本吗?如何解决这个问题? 谢谢

    3 回复  |  直到 8 年前
        1
  •  0
  •   Community Mohan Dere    6 年前

    从Android 6.0(API级别23)开始,用户在应用程序运行时授予应用程序权限,而不是在安装应用程序时

    if (ContextCompat.checkSelfPermission(getActivity(),
                            Manifest.permission.CAMERA)
                            != PackageManager.PERMISSION_GRANTED) {
                        // User may have declined earlier, ask Android if we should show him a reason
    
                        if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.CAMERA)) {
                            // show an explanation to the user
                            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, PERMISSIONS_REQUEST_CAPTURE_IMAGE);
    
                            // Good practise: don't block thread after the user sees the explanation, try again to request the permission.
                        } else {
                            // request the permission.
                            // CALLBACK_NUMBER is a integer constants
                            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, PERMISSIONS_REQUEST_CAPTURE_IMAGE);
                            // The callback method gets the result of the request.
                        }
                    } else {
    
                        Intent intent = new Intent();
                        intent.setType("image/*");
                        intent.setAction(Intent.ACTION_GET_CONTENT);
                        startActivityForResult(Intent.createChooser(intent, "Select Picture"), 12);
    
                    }

     @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            //super.onActivityResult(requestCode, resultCode, data);
    
            if(requestCode==12)
            {
                if(resultCode==RESULT_OK)
                {
    
                    if (data == null) {
                        //Display an error
                        Utils.Toast_S(getActivity(), "No Image Data");
    
                        return;
                    }
                    try {
                         inputStream = getContext().getContentResolver().openInputStream(data.getData());
    
                        imageView.setImageBitmap(BitmapFactory.decodeStream(inputStream));
    
                        File  file=new File("");
                        file.getName();
                        file.getAbsolutePath();
    
    
    
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                        Toast.makeText(getContext(), "Exception", Toast.LENGTH_SHORT).show();
                    }
    
    
                }
            }
    
        }
        2
  •  0
  •   Naveed Akhtar    8 年前

    link 会帮助你的。只需添加 ImageFilePath。Java语言

        3
  •  0
  •   Mallikarjuna    8 年前

    系统权限分为几个保护级别。需要了解的两个最重要的保护级别是正常权限和危险权限:

    正常权限涵盖应用程序需要访问应用程序沙盒外数据或资源的区域,但对用户隐私或其他应用程序的操作风险很小。例如,设置时区的权限是正常权限。如果应用程序声明需要正常权限,系统会自动将权限授予该应用程序。有关当前正常权限的完整列表,请参阅正常权限。

    [链接] https://developer.android.com/guide/topics/permissions/requesting.html