Android 6.0已经改变了管理sdcard-mount的方式,但不能让它显示正确。
在5.x之前,我们可以通过层次结构
下的DDMS Perspective(Eclipse)访问SDCard内容的/ mnt /壳/...
现在根据Documentation
/ SD卡/
我无法在DDMS下看到此目录的任何内容,但在PC或其他应用程序(如Astro)中。
我应该在Eclipse(DDMS)中设置什么才能看到该内容?
答案 0 :(得分:1)
启动Android 6.0后,第三方应用无法查看SDCard内容。
在Android 6.0中,第三方应用无法访问sdcard_r和 sdcard_rw GID。而是通过仅安装来控制访问 适合该应用程序的适当运行时视图。跨用户 使用每个人GID阻止交互。
https://source.android.com/devices/storage/
作为附加信息,Android 6.0引入了 Adoptable Storage 和 Runtime Permissions ,这对与设备存储的交互施加了限制。
希望它对你有所帮助。
<强>更新强>
关于如何访问从DDMS到Android 6.0的文件。不允许此操作。如果您需要从应用程序访问文件,可以使用以下源代码示例:
@Override
protected void onCreate(Bundle savedInstanceState) {
mPermissions = new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE };
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
boolean isAllow = ContextCompat.checkSelfPermission(this, mPermissions[0]) == PackageManager.PERMISSION_GRANTED;
if (!isAllow) {
if (shouldShowRequestPermissionRationale(mPermissions[0])) {
// There is you need to display confirmation dialog about why you need to get this permission.
if (confirm("You need to copy database to device's storage") == YES) {
requestPermissions(mPermissions, REQUEST_CODE_ASK_PERMISSIONS)
} else {
// User does not agree with your requirements
// You should decide how the app will work in this case.
message("You can't use this app!");
finish();
}
return;
}
requestPermissions(mPermissions, REQUEST_CODE_ASK_PERMISSIONS);
}
} else {
runTheApp();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_PERMISSIONS:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
runTheApp();
} else {
message("You can't use this app!")
}
}
break;
case REJECT_CODE_PERMISSIONS:
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}