权限被拒绝:android.Manifest.permission.READ_EXTERNAL_STORAGE
Permission denied: android.Manifest.permission.READ_EXTERNAL_STORAGE
我已经阅读了所有类似的问题,但找不到解决方案。是 android 10。
我需要你的帮助
file.isFile()
returns 正确。
但是 file.canRead()
returns 错误。因此, 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>
gradle 文件中的 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
}
请尝试将 android:requestLegacyExternalStorage="true"
属性添加到 AndroidManifest.xml
文件中的 application
标签:
<application
...
android:requestLegacyExternalStorage="true">
您还应该在运行时请求该权限,检查 this link。
我已经阅读了所有类似的问题,但找不到解决方案。是 android 10。 我需要你的帮助
file.isFile()
returns 正确。
但是 file.canRead()
returns 错误。因此, 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>
gradle 文件中的 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
}
请尝试将 android:requestLegacyExternalStorage="true"
属性添加到 AndroidManifest.xml
文件中的 application
标签:
<application
...
android:requestLegacyExternalStorage="true">
您还应该在运行时请求该权限,检查 this link。