2

我正在为我的应用程序测试存储访问框架。

在我的应用程序中,用户选择一个文件夹作为应用程序本身文件系统的访问点。

此方法用于:

static public void openPickerForFolderSelection(Activity activity, int requestCode)
{
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
    intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    activity.startActivityForResult(intent, requestCode);
}

在 onActivityResult 方法中调用了以下代码:

static public Uri takePermanentReadWritePermissions(Activity activity, Intent data)
{
int takeFlags = data.getFlags()
        &
        (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
ContentResolver resolver = activity.getContentResolver();
resolver.takePersistableUriPermission(data.getData(),takeFlags);
return data.getData();

}

我在 onActivityResult 中编写了这段代码来检查 Uri:

Cursor c = null;
            ContentResolver contentResolver;
            contentResolver = activityName.getContentResolver();
            c = contentResolver.query(accessPointUri, new String[] {
                    DocumentsContract.Document.COLUMN_DISPLAY_NAME,
                    DocumentsContract.Document.COLUMN_DOCUMENT_ID}, null, null, null);

            while (c.moveToNext())
            {
                String [] s= c.getColumnNames();
                for (int i=0;i<s.length;i++)
                    Log.d("column ",String.valueOf(i)+" "+s[i]);
            }
            c.close();

我尝试将此代码放在权限请求之前或之后,但在这两种情况下我都会收到此错误:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=13, result=-1, data=Intent { dat=content://com.android.providers.downloads.documents/tree/raw:/storage/emulated/0/Download/accesspoint1 flg=0xc3 }} to activity {com.example.app/com.example.app.activityName}: java.lang.UnsupportedOperationException: Unsupported Uri content://com.android.providers.downloads.documents/tree/raw%3A%2Fstorage%2Femulated%2F0%2FDownload%2Faccesspoint1

这是故障还是我的代码错误?

4

0 回答 0