如何在外部存储中创建文件夹并检查权限? [英] How to create folder in external storage and check for permission?

查看:84
本文介绍了如何在外部存储中创建文件夹并检查权限?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在单击照片布局时创建一个文件夹.在单击布局时,如果创建的新文件夹为空,则应打开该文件夹,该文件夹应显示吐司或应打开包含图像的文件夹.为此,我创建了一个新文件,并正在扫描文件,它为文件数组引发了空指针异常.

I want to create a folder on click of photo's layout. And on click of layout new folder created should get open if it is empty it should show the toast or it should get open with images. For this I have created a new file and I am doing a scan for files, it is throwing a null pointer exception for the array of files.

  String path = Environment.getExternalStorageDirectory().toString();
File dir = new File(path,"/MeaVita");



File file1 = new File(Environment.getExternalStorageDirectory().getPath() + "/MeaVita");

File[] listFile = file1.listFiles();



    photosLayout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


            checkFilePermissions();


              if (!dir.isDirectory()) {
                 dir.mkdirs();
              }


            if (listFile.length == 0) {
                    Toast.makeText(MainActivity.this, "The folder is empty.", Toast.LENGTH_SHORT).show();
                } else {

                    new MainActivity.SingleMediaScanner(MainActivity.this, listFile[0]);
                }

        }
    });

方法

    public class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient {

    private MediaScannerConnection mMs;
    private File mFile;

    public SingleMediaScanner(Context context, File f) {
        mFile = f;
        mMs = new MediaScannerConnection(context, this);
        mMs.connect();
    }

    public void onMediaScannerConnected() {
        mMs.scanFile(mFile.getAbsolutePath(), null);
    }

    public void onScanCompleted(String path, Uri uri) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(uri);
        startActivity(intent);
        mMs.disconnect();
    }

}

private void checkFilePermissions() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        int hasWriteExternalStoragePermission = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (hasWriteExternalStoragePermission != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    REQUEST_CODE_ASK_PERMISSIONS);
        }
    }
}

日志:

FATAL EXCEPTION: main
                                                                        Process: com.example.siddhi.meavita, PID: 15025
                                                                        java.lang.NullPointerException: Attempt to get length of null array
                                                                            at com.example.siddhi.meavita.Activities.MainActivity$2.onClick(MainActivity.java:119)
                                                                            at android.view.View.performClick(View.java:5201)

  photosLayout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


            String folder_main = "MeaVita";
            File dir = new File(Environment.getExternalStorageDirectory(),folder_main);


            checkFilePermissions();

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

            File[] listFile = dir.listFiles();

            if (listFile.length == 0) {
                Toast.makeText(MainActivity.this, "The folder is empty.", Toast.LENGTH_SHORT).show();
            } else {

                new MainActivity.SingleMediaScanner(MainActivity.this, listFile[0]);
            }

        }
    });

此代码现在可以使用,但是它不要求许可,然后创建了文件夹.怎么样?

This code works now , but it dose not ask for the permission then also it creates the folder. How?

请帮忙解决..

推荐答案

String path = Environment.getExternalStorageDirectory().toString();
File dir = new File(path,"/MeaVita");

photosLayout.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

 if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
            == PackageManager.PERMISSION_GRANTED) {
     if (!dir.isDirectory()) {
         dir.mkdirs();
     }


     if (listFile.length == 0) {
                Toast.makeText(MainActivity.this, "The folder is empty.",Toast.LENGTH_SHORT).show();
            } else {
                new MainActivity.SingleMediaScanner(MainActivity.this, listFile[0]);
            }
    }
  } else {
        checkFilePermissions();

}});

这篇关于如何在外部存储中创建文件夹并检查权限?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆