如何在不询问运行时权限的情况下在Android 6.0中写入SD卡?

时间:2016-10-04 10:01:28

标签: java android

我想问一下 - 应用程序可以在不询问运行时权限的情况下将数据写入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
    }
}

}

1 个答案:

答案 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+上的行为。我不再崩溃所以我想我的实现是正确的)