开发者社区> 问答> 正文

mPaaS怎么Android 12 mpaas 无法选择文件?

mPaaS怎么Android 12 mpaas 无法选择文件?

2023-10-23 10:58:13.110 22222-23323/com.xxxx W/ContentUriUtils: Cannot open content uri: content://com.android.providers.media.documents/document/image%3A36928
    java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaDocumentsProvider uri content://com.android.providers.media.documents/document/image%3A36928 from pid=22222, uid=10788 requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
        at android.os.Parcel.createExceptionOrNull(Parcel.java:2443)
        at android.os.Parcel.createException(Parcel.java:2427)
        at android.os.Parcel.readException(Parcel.java:2410)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
        at android.content.ContentProviderProxy.query(ContentProviderNative.java:481)
        at android.content.ContentResolver.query(ContentResolver.java:1291)
        at android.content.ContentResolver.query(ContentResolver.java:1223)
        at android.content.ContentResolver.query(ContentResolver.java:1172)
        at org.chromium.base.ContentUriUtils.isVirtualDocument(U4Source:263)
        at org.chromium.base.ContentUriUtils.getAssetFileDescriptor(U4Source:137)
        at org.chromium.base.ContentUriUtils.contentUriExists(U4Source:94)

展开
收起
青城山下庄文杰 2023-10-30 16:28:42 46 0
3 条回答
写回答
取消 提交回答
  • 对于Android 12上的mPaaS(移动开发平台)无法选择文件的问题,可能有几个原因导致。以下是一些可能的解决方法:

    1.权限问题:Android 12对权限管理进行了更新,可能会影响到mPaaS的文件选择功能。请确保您的应用具有适当的权限,并且用户已经授予了必要的权限。您可以在AndroidManifest.xml文件中声明所需的权限,并在运行时请求用户授予这些权限。
    2.文件选择API兼容性问题:mPaaS可能使用了一些与Android 12不兼容的文件选择API。请确保您使用的mPaaS版本与您的Android 12设备兼容。您可以查看mPaaS的文档或联系技术支持以获取更多关于兼容性的信息。
    3.应用崩溃或崩溃日志:如果您的应用在尝试选择文件时崩溃,请查看崩溃日志以获取更多关于崩溃原因的信息。这些日志通常可以在Android设备的设置中找到,或者通过连接到开发人员选项中的日志记录器来查看。
    4.网络问题:mPaaS可能依赖于网络连接来访问文件选择器或文件系统。如果您的设备没有稳定的网络连接,或者mPaaS服务的网络访问受到限制,可能会导致无法选择文件。请确保您的设备具有稳定的网络连接,并检查mPaaS服务的网络访问权限。
    如果以上方法都没有解决问题,建议您联系mPaaS的技术支持或查阅相关文档以获取更多帮助。

    2023-10-31 17:50:16
    赞同 展开评论 打赏
  • 这个错误信息表明你的应用在尝试访问一个内容URI时遇到了权限问题。这个URI指向的是一个媒体文档,但是你的应用没有足够的权限来读取这个文档。

    在Android 12及更高版本中,为了访问存储在设备上的媒体文件,你需要使用新的"MANAGE_MEDIA_PROJECTION"权限。在你的应用的清单文件中添加这个权限,然后请求用户授予这个权限。

    此外,你也可以尝试使用"ACTION_OPEN_DOCUMENT"或相关的API来替代直接访问内容URI。这样,用户可以选择要打开的文件,而不是让你的应用直接访问特定文件。

    2023-10-31 15:55:20
    赞同 展开评论 打赏
  • 你的问题与Android开发相关,涉及到Android 12(API级别29)中对于文件访问权限的更改。

    在Android 11(API级别29)之前,应用程序可以通过使用WRITE_EXTERNAL_STORAGE权限来访问外部存储的文件。然而,从Android 11开始,Google引入了更严格的文件访问权限,其中包括对外部存储的更改。现在,应用程序需要明确请求访问文件和目录的权限。

    具体来说,如果你的应用需要访问外部存储,你需要在运行时请求READ_EXTERNAL_STORAGE和/或WRITE_EXTERNAL_STORAGE权限。而且,如果你想访问特定的文件或目录,你还需要使用OPEN_DOCUMENT或OPEN_DOCUMENT_TREEAPI。

    从你的错误日志中看,你的应用正在尝试通过Content URI访问一个图片文件,但是因为没有正确地请求权限或者没有使用正确的API,所以出现了SecurityException。
    如果你需要在运行时请求文件访问权限,你可能需要使用Activity#requestPermissions方法。在你的代码中,你可能需要做类似下面的操作:

    if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {  
        ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_CODE_PERMISSIONS);  
    }
    

    当用户授予权限后,你可以继续你的文件访问操作。如果用户拒绝了你的请求,你可以在onRequestPermissionsResult方法中处理这种情况。

    另外,如果你需要使用OPEN_DOCUMENT或OPEN_DOCUMENT_TREEAPI来访问文件或目录,你可以使用DocumentsContract类中的静态方法。例如:

    try {  
        Uri contentUri = DocumentsContract.buildDocumentUriForPermission(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageId);  
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);  
        intent.addCategory(Intent.CATEGORY_OPENABLE);  
        intent.setDataAndType(contentUri, "image/*");  
        startActivityForResult(intent, REQUEST_CODE_OPEN_DOCUMENT);  
    } catch (ActivityNotFoundException e) {  
        // Handle error  
    }
    

    在这个例子中,你首先构建了一个Content URI,然后你创建了一个新的Intent来请求打开一个文档。你设置了数据的URI和类型,然后你启动了新的活动来处理这个Intent。如果设备上的应用可以处理这个Intent,那么会打开一个文件选择器让用户选择文件。

    2023-10-31 09:18:00
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载