意图在Marshmallow存储资源管理器?

时间:2016-02-03 23:54:56

标签: android android-intent android-6.0-marshmallow android-external-storage

在Android 6.0 Marshmallow中,设置→存储&存储器下有一个存储资源管理器。 USB→探索。

是否可以使用Activity在应用内启动此Intent

我发现我可以使用SettingsACTION_INTERNAL_STORAGE_SETTINGS启动ACTION_MEMORY_CARD_SETTINGS活动但是我还没有找到启动“探索”活动的方法。 我想在探索模式下使用预定义的路径启动它,可能通过额外的意图或其他内容,例如intent.putExtra("PATH", getFilesDir() + "/stuff");

Intent intent = new Intent(Settings.ACTION_INTERNAL_STORAGE_SETTINGS);
startActivity(intent);

是否可以启动以下任何一项?

  • com.android.externalstorage
  • com.android.documentsui
  • com.android.documentsui / .DocumentsActivity

是否可以使用预定义的路径启动活动?

2 个答案:

答案 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);