[英]Nothing happens when I try to create a new java project on Eclipse
[英]Nothing happens when I try to create directories in Android
在我的应用程序中,我试图在外部存储目录中创建文件夹,但我无法让它工作。 我的代码看起来应该可以正常工作(它在创建目录之前等待存储权限)。 所有mkdirs()
行都运行,但没有任何反应——甚至没有错误。
这是我的主要代码(在单独的线程上运行 - 我尝试在 UI 线程上运行setupDir()
)
while(!(//checks for permissions
ContextCompat.checkSelfPermission(instance, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
&& ContextCompat.checkSelfPermission(instance, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
)){
try{Thread.sleep(200);}catch(Exception ignored){}
}
MigratedFunctions.setupDir();
这是我的 setupDir 方法
public static final String main_folder_name = "Forehead_Temperature_Detector";
public static void setupDir(){//https://stackoverflow.com/questions/24781213/how-to-create-a-folder-in-android-external-storage-directory
String main_folder = main_folder_name;
String log_folder = "logs";
String records_folder = "records";
File mainFolder = new File(Environment.getExternalStorageDirectory(), main_folder);
if (!mainFolder.exists()) {
mainFolder.mkdirs();
}
File logFolder = new File(Environment.getExternalStorageDirectory() + "/" + main_folder, log_folder);
if (!logFolder.exists()) {
logFolder.mkdirs();
}
File recordsFolder = new File(Environment.getExternalStorageDirectory() + "/" + main_folder, records_folder);
if (!recordsFolder.exists()) {
recordsFolder.mkdirs();
}
}
一旦用户通过设置菜单,以下代码将在不同的线程上运行(requestPermissions 只是正常请求权限,确切的代码并不重要 - 重要的是第一个片段中的条件实际上确实得到满足一旦权限被授予)
runOnUiThread(()->{
if(!(//checks and asks for permissions if necessary
ContextCompat.checkSelfPermission(instance, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
&& ContextCompat.checkSelfPermission(instance, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
)){
requestPermissions(PermissionHandler.PERMISSIONS_FOR_STORAGE_DISCOVERY,2);//the requestCode is arbitrary (default:2)
}
});
据此,如果您使用目标 sdk 29,没有旧版存储,应用程序仍然可以使用 getExternalFilesDir() 和类似目录而无需权限。 但是,外部存储的 rest 似乎无法通过文件系统 API 访问。 你既不能读也不能写。 这包括其他应用程序创建的文件和用户放置在设备上的文件(例如,通过 USB 电缆)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.