权限被拒绝:android.Manifest.permission.READ_EXTERNAL_STORAGE

时间:2020-07-11 19:00:44

标签: android gradle permissions build.gradle android-external-storage

我已经阅读了所有类似的问题,但是找不到解决方案。这是android 10。 我需要你的帮助

file.isFile()返回true。 但是file.canRead()返回false。因此,FileInputStream(file)导致以下错误; android.system.ErrnoException:打开失败:EACCES(权限被拒绝)

清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
       <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.CAMERA" />
    
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
   <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="MyApp"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"

    android:name="androidx.multidex.MultiDexApplication">

    <activity android:name=".allresults"/>

    <activity android:name=".DiagnoseActivity">
        <intent-filter>
            <action android:name="com.dailystudio.deeplab.MainActivity" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".profileActivity" />

    <activity android:name=".LoginActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".MainActivity" />

    <activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
        android:theme="@style/Base.Theme.AppCompat"/> 

    
    </manifest>
grap文件中的

SDK版本是;

android {
    compileSdkVersion 29 // <====
    buildToolsVersion "29.0.3"

    defaultConfig {
        applicationId "com.example.HT1"
        minSdkVersion 23  // minSdkVersion 16  // <====
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        multiDexEnabled true

    }

项目级别的gradle代码;

buildscript {
    ext.kotlin_version = '1.3.72' //'1.3.61'
    repositories {
        google()
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.3'

    }
}

allprojects {
    repositories {
        google()
        jcenter()
        
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

1 个答案:

答案 0 :(得分:2)

请尝试向android:requestLegacyExternalStorage="true"文件中的application标签添加AndroidManifest.xml属性:

<application
    ...
    android:requestLegacyExternalStorage="true">

此外,您还应该在运行时请求该权限,请选中this link