在继续之前检查是否授予了在存储上写入的权限

我的应用程序出现问题。要使用选项,我需要授予外部存储访问权限。我在那里找到了完美的代码:


public  boolean isStoragePermissionGranted() {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

    if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)

            == PackageManager.PERMISSION_GRANTED) {

        Log.v(TAG,"Permission is granted");

        return true;

    } else {


        Log.v(TAG,"Permission is revoked");

        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);

        return false;

    }

}

else { //permission is automatically granted on sdk<23 upon installation

    Log.v(TAG,"Permission is granted");

    return true;

}

}

问题是,代码工作正常,但我不明白如果未授予访问权限,如何阻止我自己的代码继续(或等待用户单击“允许”,然后再继续我的代码)。


我的代码:


isStoragePermissionGranted();

        File outputFile = new File("");

            InputStream is = getResources().openRawResource(((Sound) adapter.getItem(index)).getMpsound());

            try {

                byte[] buffer = new byte[is.available()];

                is.read(buffer);

                File outputDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

                outputFile = new File(outputDir, getResources().getResourceEntryName(((Sound) adapter.getItem(index)).getMpsound()) + ".mp3");

                OutputStream os = new FileOutputStream(outputFile);

                os.write(buffer);

            } catch (IOException e) {

                e.printStackTrace();

            }

            Intent share = new Intent(Intent.ACTION_SEND);

            share.setType("audio/*");

            share.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", outputFile));

            share.putExtra(Intent.EXTRA_TEXT, "\"" + ((Sound) adapter.getItem(index)).getTitre_show() + "\" shared by my app !");

            startActivity(Intent.createChooser(share, "Share Sound File"));

            return true;

目前,一切都已执行,即使未授予访问权限,应用程序也会尝试共享文件。所以这是行不通的。如果我返回,则会弹出请求允许访问的窗口,等待答案。


我怎样才能做到这一点?


慕婉清6462132
浏览 43回答 1
1回答

30秒到达战场

改变这一行isStoragePermissionGranted();这应该可行。if(isStoragePermissionGranted())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java