本来测着好好的手机系统突然升级到6.0应用就崩溃了,提示是没有文件权限。百度了一下才知道6.0之后不能只是在 xml配置文件中配置权限了,在哪调用就在那动态添加权限。
我的gradle中
defaultConfig { applicationId "com.#########" minSdkVersion 15 targetSdkVersion 22 versionCode 11 versionName "2.0" }
他的值是23,所以可以支持6.0系统。其实这里把他调低,改成22这个问题也能解决,意思就是让手机支持的是android5.1的系统。一般如果不需要6.0中的一些新东西的话建议这样,简单。
如果真的想用6.0可以写个类似工具的方法
2 private static final int REQUEST_EXTERNAL_STORAGE = 1; 3 private static String[] PERMISSIONS_STORAGE = { 4 Manifest.permission.READ_EXTERNAL_STORAGE, 5 Manifest.permission.WRITE_EXTERNAL_STORAGE }; 6 15 public static void verifyStoragePermissions(Activity activity) { 16 // Check if we have write permission 17 int permission = ActivityCompat.checkSelfPermission(activity, 18 Manifest.permission.WRITE_EXTERNAL_STORAGE); 19 20 if (permission != PackageManager.PERMISSION_GRANTED) { 21 // We don't have permission so prompt the user 22 ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, 23 REQUEST_EXTERNAL_STORAGE); 24 } 25 }在每次需要调用文件操作的之前都先调用它,给他权限。我这里没有判断到底设备是那个SDK的可以在此之前再判断一下SDK版本,大于23则调用此工具方法配置动态权限,小于的话就不用管, if (Build.VERSION.SDK_INT >= 23) {...}