我想问一下 - 应用程序可以在不询问运行时权限的情况下将数据写入Android 6.0中的外部SD卡吗?我知道正确的方法是检查,如果用户授予我的应用程序的此类权限。我进行了一些小型研究,并发现GooglePlay中的大多数FileManger都要求这些权限。但ES FileExplorer(https://play.google.com/store/apps/details?id=com.estrongs.android.pop) - 不会要求这样的权限,并且可以使用SD卡执行任何操作!有谁知道他们是如何实现这一目标的?感谢帮助!
这是我的gradle代码
android {
buildToolsVersion '23.0.2'
compileSdkVersion 22
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
instrumentTest.setRoot('tests')
dexOptions {
javaMaxHeapSize "4g"
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/NOTICE.txt'
}
defaultConfig {
// Enabling multidex support.
multiDexEnabled true
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
答案 0 :(得分:3)
当您在项目的Gradle文件中设置不大于22的compileSdkVersion时,您可以实现这一点。
重要!当您将应用程序版本部署到Google Play商店时,该版本是针对大于22的版本编译的,您永远不能切换回23以下的版本。如果使用此版本和SDK,您甚至无法切换回上一个稳定版本版本低于23.您将在Google Play商店中获得例外。它不会允许它。
(这在几天前发生在我身上,我意外地设置了一个大于22的版本,将其部署到Google Play,突然间我发生了很多崩溃,因为Android 6.0+没有使用许可,我没有要求它因为它没有在代码中实现。但我也无法切换回Google Play中以前的工作版本。所以我不得不快速实现新的权限模型,但由于我没有,因此甚至无法测试它Android 6.0设备和模拟器总是很糟糕。现在我在商店里有3个应用程序,我不知道他们在Android 6.0+上的行为。我不再崩溃所以我想我的实现是正确的)