有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在安卓 11中实现存储权限。有人能分享一个用java实现的例子吗

Intent chooserIntent = null;
       try {
           StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
           StrictMode.setVmPolicy(builder.build());
   
           List<Intent> intentList = new ArrayList<>();
           Intent pickIntent = new Intent(Intent.ACTION_PICK,
                   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),
                       "Select photo !");
               chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentList.toArray(new Parcelable[]{}));
           }
           return chooserIntent;
       }catch (Exception e){
           e.printStackTrace();
       }

在这里,我在将版本设置为30后获得了intent size 0,但在以前的版本中,它工作正常


共 (1) 个答案

  1. # 1 楼答案

    添加权限

    `<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>`
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    

    添加此行清单文件应用程序标记

    android:requestLegacyExternalStorage="true"
    

    在你的活动中考虑这些变量

    private static final int REQUEST_EXTERNAL_STORAGE = 1;
    private static String[] PERMISSIONS_STORAGE = {
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };
    

    在活动onCreateView方法中

    int permission = ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
    
        if (permission != PackageManager.PERMISSION_GRANTED) {
            // We don't have permission so prompt the user
            ActivityCompat.requestPermissions(
                    MainActivity.this,
                    PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE
            );
        }
    
        else {
    
           //write code for permission granted 
        }