什么应该是我的材料设计和外部存储访问的最小/目标sdk版本?

时间:2017-12-31 10:32:47

标签: android

我想写一个只有2个要求的非常简单的应用程序。支持材料设计并使用手机内部存储。

因此,当我创建Android工作室项目时,我的minSdkVersion设置为21,而我的targetSdkVersion设置为26.

这给了我以下问题。当我想访问内部存储时,由于新的运行时权限系统,我无法访问。我想我需要编写请求持久化的代码,但后来我遇到了requestPermissions函数需要minSdkVersion为23的问题。

所以,这就是我想要的。我想确保我的应用程序适用于任何高于5的Android版本。解决此权限问题的正确方法是什么,我的minSdk和targetSdk应该是什么?

我想将我的minSdkVersion设置为21并完成它,但我不知道可能会带来什么问题。

2 个答案:

答案 0 :(得分:1)

您应该使用支持库请求权限。官方文档很好地解释了整个过程:Requesting Permissions at Run Time。 正如本指南所说:

  

使用支持库更简单,因为您的应用程序在调用方法之前无需检查其运行的Android版本

答案 1 :(得分:0)

public boolean haveStoragePermission() {
        if (Build.VERSION.SDK_INT >= 23) {
            if (getApplicationContext().checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
                    getApplicationContext().checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
                return true;
            } else {
                ActivityCompat.requestPermissions(AddPostActivity.this , new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
                return false;
            }
        }
        else {
            return true;
        }
    }

onCreate()方法的开头添加此方法,不要忘记将这两个权限添加到mainifest文件中。