如何在SD卡(android 8.0+)的根目录下保存文件?
我正在尝试在外部SD卡的根目录下创建一个文件夹,然后将我的应用程序生成的文件放入其中 我要求获得写入外部存储权限,但我认为仅在外部SD卡上写入是不够的 这是我的密码:如何在SD卡(android 8.0+)的根目录下保存文件?,android,android-storage,Android,Android Storage,我正在尝试在外部SD卡的根目录下创建一个文件夹,然后将我的应用程序生成的文件放入其中 我要求获得写入外部存储权限,但我认为仅在外部SD卡上写入是不够的 这是我的密码: private boolean authorized = false; private final static int MY_PERMISSIONS_REQUEST_EXTERNAL_STORAGE = 1; protected void onCreate(Bundle savedInstanceState) {
private boolean authorized = false;
private final static int MY_PERMISSIONS_REQUEST_EXTERNAL_STORAGE = 1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
long debut = System.currentTimeMillis();
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
debut = System.currentTimeMillis();
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_EXTERNAL_STORAGE);
} else {
authorized = true;
}
while (!authorized) {
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
authorized = true;
} else if (System.currentTimeMillis() - debut >= 5000) {
this.finish();
System.exit(0);
}
}
//SDCARD path = "/storage/9016-4EF8"
new File("/storage/9016-4EF8"+"/MyApp").mkdirs();
}
我的代码适用于我的手机安卓5.1,但不适用于我的平板电脑安卓8.1。看起来我只有最新版本的android的阅读权限。
如何获得SD卡的写入权限 我正在使用文件资源管理器应用程序Xplore,该应用程序在能够修改SD卡上的文件之前似乎需要另一个权限: 允许Xplore访问sd卡上的数据,包括照片和视频
如果可能的话,我怎么能申请这个许可呢?你说得对!如果您想访问SD卡,这是不够的。您需要使用文档文件
请参阅我对有关SD卡的旧问题的回答,以了解如何访问SD卡。我如何获得SD卡的写入权限?-你不需要,尤其是在安卓Q和更高版本上。使用存储访问框架,例如,ACTION_OPEN_DOCUMENT_TREE,让用户选择内容的去向。问题是我不希望用户能够选择,我需要将我的文件放在固定位置,在SD卡上很容易找到。no my friend这是一种不好的做法,Google不再允许这样做。用户必须选择文件夹。你可以通过对话框或其他方式让用户选择SD的根文件夹,这样你就可以访问该文件夹的任何子文件夹,当然这意味着整个SD卡。我被要求以这种方式保存所有文件。如果我将返回的URI保存在某个地方,我会保留写入权限吗?我被要求以这种方式保存所有文件-与向您提出该要求的人交谈,并解释这不是Android上的工作方式。我需要我的文件在一个固定的位置,很容易在SD卡上找到-欢迎您使用getExternalFilesDirs。如果返回2+个位置,除第一个位置外,所有位置都将位于可移动介质上。不过,它不会成为可移动媒体的根。如果我将返回的URI保存在某个地方,我会保留写入权限吗?-您可以对从存储访问框架获得的Uri使用takePersistableUriPermissions on ContentResolver。没有提供任何内容,也没有示例。如果这个问题是公开的,你应该举例回答。否则,这是您发布的问题的副本