gpt4 book ai didi

android - 我如何在用户第一次使用我的应用时设置 ACTION_OPEN_DOCUMENT_TREE 开始路径?

转载 作者:行者123 更新时间:2023-12-04 07:40:18 25 4
gpt4 key购买 nike

我看到很多关于设置开始的问题 uriIntent.ACTION_OPEN_DOCUMENT_TREE但所有这些都需要一个 uri这是因为之前使用过该文件夹选择器。
我想要做的是将我的用户直接发送到 Download文件夹时选择文件夹但我不知道如何转换/storage/emulated/0/Downloaduri我可以使用 DocumentsContract.EXTRA_INITIAL_URI 作为额外传递.
有没有办法将任何文件路径转换为 ​​DocumentsContract款式uri ?
编辑:为了清楚起见,我说的是 uri经过这里:

        val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)
.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri)

最佳答案

我们操作 .createOpenDocumentTreeIntent() 的初始 URL。

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q)
{
StorageManager sm = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);

Intent intent = sm.getPrimaryStorageVolume().createOpenDocumentTreeIntent();
//String startDir = "Android";
//String startDir = "Download"; // Not choosable on an Android 11 device
//String startDir = "DCIM";
// String startDir = "DCIM/Camera"; // replace "/", "%2F"
String startDir = "DCIM%2FCamera";

Uri uri = intent.getParcelableExtra("android.provider.extra.INITIAL_URI");

String scheme = uri.toString();

Log.d(TAG, "INITIAL_URI scheme: " + scheme);

scheme = scheme.replace("/root/", "/document/");

scheme += "%3A" + startDir;

uri = Uri.parse(scheme);

intent.putExtra("android.provider.extra.INITIAL_URI", uri);

Log.d(TAG, "uri: " + uri.toString());

((Activity) context).startActivityForResult(intent, REQUEST_ACTION_OPEN_DOCUMENT_TREE);

return;
}
日志将打印如下内容:
INITIAL_URI scheme: content://com.android.externalstorage.documents/root/primary
uri: content://com.android.externalstorage.documents/document/primary%3ADownload

关于android - 我如何在用户第一次使用我的应用时设置 ACTION_OPEN_DOCUMENT_TREE 开始路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67509218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com