在Android 6.0 Marshmallow中,设置→存储&存储器下有一个存储资源管理器。 USB→探索。
是否可以使用Activity
在应用内启动此Intent
?
我发现我可以使用Settings或ACTION_INTERNAL_STORAGE_SETTINGS
启动ACTION_MEMORY_CARD_SETTINGS
活动但是我还没有找到启动“探索”活动的方法。
我想在探索模式下使用预定义的路径启动它,可能通过额外的意图或其他内容,例如intent.putExtra("PATH", getFilesDir() + "/stuff");
Intent intent = new Intent(Settings.ACTION_INTERNAL_STORAGE_SETTINGS);
startActivity(intent);
是否可以启动以下任何一项?
是否可以使用预定义的路径启动活动?
答案 0 :(得分:1)
在Android 6.0中,你可以像以前版本的android一样使用Intent 您可以使用最近的文件打开默认存储资源管理器的操作系统 使用选项菜单将其更改为 显示外部存储空间 还有导航抽屉,可提供更多选项,如照片,图像,视频,音频 下面的过滤器等是代码
public void openFileEx() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent, 15);
}
但您必须在android 6.0 Marshmallow中请求android.permission.READ_EXTERNAL_STORAGE
的许可才能从外部存储中读取文件,如下所示
if (Build.VERSION.SDK_INT < 23) {
openFileEx();
} else {
if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
requestContactsPermissions();
} else {
openFileEx();
}
}
public void requestContactsPermissions() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_EXTERNAL_STORAGE)) {
Log.i("PERMISIOM",
"Displaying contacts permission rationale to provide additional context.");
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
11);
} else {
// Contact permissions have not been granted yet. Request them directly.
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 11);
}
}
您还可以使用上面的代码检查更多权限,以下是Github上android-RuntimePermissions的示例。
答案 1 :(得分:0)
查看DocumentsActivity
类的源代码非常有用。
启动活动可以完成以下代码:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setType("*/*");
intent.setClassName("com.android.documentsui", "com.android.documentsui.DocumentsActivity");
startActivity(intent);