Itextpdf库教程中的java.io.FileNotFoundException

Itextpdf库教程中的java.io.FileNotFoundException,java,android,itext,Java,Android,Itext,我今天一直在试,结果出了点小差错。 主要是:java.io.FileNotFoundException:/storage/emulated/0/Download/pdfdemo20170521\u 145348.pdf:open失败:EACCES(权限被拒绝) 我已经实现了适当的权限,如 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission and

我今天一直在试,结果出了点小差错。 主要是:
java.io.FileNotFoundException:/storage/emulated/0/Download/pdfdemo20170521\u 145348.pdf:open失败:EACCES(权限被拒绝)

我已经实现了适当的权限,如

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

当我查看日志时,第107行出现错误。这是一行:
OutputStream output=newfileoutputstream(myFile)

对于sdk>=23,您需要询问运行时权限

以下是Android操作系统所需的运行时权限列表

在您的
Oncreate()

使用以下方式请求许可:

if (Build.VERSION.SDK_INT >= 23) {
    if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
            == PackageManager.PERMISSION_GRANTED) {
       //you code..
       //read_file()
    } else {
        //request permission
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
    }
}
else { 

    //permission is automatically granted on sdk<23 upon installation
    //Your code
    //read_file()
}

对于sdk>=23,您需要询问
运行时权限

以下是Android操作系统所需的运行时权限列表

在您的
Oncreate()

使用以下方式请求许可:

if (Build.VERSION.SDK_INT >= 23) {
    if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
            == PackageManager.PERMISSION_GRANTED) {
       //you code..
       //read_file()
    } else {
        //request permission
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
    }
}
else { 

    //permission is automatically granted on sdk<23 upon installation
    //Your code
    //read_file()
}

如果在Android 6或更高版本上,在清单中请求权限是不够的。您应该添加代码,要求用户也授予这些权限。运行时权限。
pdfFolder.mkdir();Log.i(“标签”,“创建的Pdf目录”)。误导性日志和不真实的日志。检查mkdir的返回值。并小心处理。您的目录未创建。而你却不知道。然后你继续,就像它在那里一样。我如何提示他们请求权限?我所做的只是将其包含在清单中。与此同时,你在谷歌上搜索运行时权限就是这个想法。您还可以转到应用程序的设置,并使用切换按钮手动打开它们。如果在Android 6或更高版本上,在清单中请求权限是不够的。您应该添加代码,要求用户也授予这些权限。运行时权限。
pdfFolder.mkdir();Log.i(“标签”,“创建的Pdf目录”)。误导性日志和不真实的日志。检查mkdir的返回值。并小心处理。您的目录未创建。而你却不知道。然后你继续,就像它在那里一样。我如何提示他们请求权限?我所做的只是将其包含在清单中。与此同时,你在谷歌上搜索运行时权限就是这个想法。您还可以转到应用程序的设置,并使用切换按钮手动打开它们。
    @Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {

        case 0: {

            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(getApplicationContext(), "Permission granted", Toast.LENGTH_SHORT).show();
                //read_file()
            } else {
                Toast.makeText(getApplicationContext(), "Permission denied", Toast.LENGTH_SHORT).show();
            }
            return;
        }
    }
 }