android-模拟器与三星设备SD卡存储
作者:互联网
三星设备是带有Android 7.0 API 24的T810,并且具有SD卡,我们创建的其他应用程序已将该SD卡正确写入SD卡上的SQLite DB.可悲的是,我们不知道这是否是在Android 7.0更新之前.到目前为止,我们无法使用下面发布的代码来写入SD卡.在运行API 26的仿真器上,设备文件浏览器正在显示此信息
数据库仿真器
/mnt/user/0/primary/Android/data/com.androidstackoverflow.onepass/files/Documents/PassWord
存储
/storage/emulated/0/Android/data/com.androidstackoverflow.onepass/files/Documents/PassWord
SD卡模拟器
/sdcard/Android/data/com.androidstackoverflow.onepass/files/Documents/PassWord
public String getThePath(){
File removable = ContextCompat.getExternalFilesDirs(this,null)[0];
if (removable.exists() && removable.canRead() && removable.canWrite()) {
THE_PATH = String.valueOf(removable);
THE_PATH = THE_PATH + "/Documents/";
}else {
Toast.makeText(getApplicationContext(),"NO SD CARD", Toast.LENGTH_LONG).show();
}
return THE_PATH;
}
我们需要帮助的问题是这是三星设备问题还是模拟器不是真实信息?
权限设置为READ和WRITE
我们甚至试图对路径进行硬编码.看了很多关于此主题的SO帖子.文件夹Documents / DB Name的创建没有问题
解决方法:
首先,产生此答案的信息由@CommonsWare提供
它张贴在这里,以便其他人无法学习,因此我可以获得积分
问题是如何管理三星平板电脑上的存储位置
最重要的是您了解测试是否将SD卡安装在仿真器上无法正常工作的下面是我非常奇怪的代码,用于测试是否已安装SD卡.然后是修改后的代码,可让您管理存储位置
File fi = new File("storage/");
File[] lst = fi.listFiles();//
String top = String.valueOf(lst[1]);
String bot = String.valueOf(lst[0]);
if(bot.contains("-")){
STORAGE_LOCATION = 1;
}
if(top.contains("storage/enc_emulated")){
STORAGE_LOCATION = 0;
}
public String getThePath(){
File removable = ContextCompat.getExternalFilesDirs(this,null)
[STORAGE_LOCATION];
if(STORAGE_LOCATION == 1){
THE_PATH = String.valueOf(removable);
THE_PATH = THE_PATH + "/Documents/";
}
if(STORAGE_LOCATION == 0){
THE_PATH = String.valueOf(removable);
THE_PATH = THE_PATH + "/INTERNAL/";
Toast.makeText(getApplicationContext(),"NO SD CARD",
Toast.LENGTH_LONG).show();
}
return THE_PATH;
}
标签:android,android-sqlite 来源: https://codeday.me/bug/20191013/1911484.html