我想在我的 Android 应用程序中设置一个可写目录。当用户选择首选目录时,返回的数据分为两部分:左边显示正确(带有列、斜杠和空格),而另一部分用 %3A、%2F 编码......之后,一切顺利错误,因为系统授予此错误 Uri 的权限。为什么会这样?正常吗?
在活动 A 中:
btnSetPath.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.addFlags(FLAG_DIR_SUPPORTS_CREATE);
intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
startActivityForResult(intent, 41);
}
在 onActivityResult 中:
if (requestCode == 41 && resultCode == Activity.RESULT_OK&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
) {
if (data != null) {
Uri retourUri =data.getData();
Log.i(TAG, "Retour direct Uri: " + retourUri.toString());
int takeFlags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
getContentResolver().takePersistableUriPermission(retourUri, takeFlags);
}
}
为什么我的跟踪输出是:
返程直接Uri:content://com.android.externalstorage.documents/tree/primary%3Adocuments%2FTest%20%2FMovies%2FAsyncam