前些天在开发uniapp项目时出现权限没有声明READ_MEDIA_IMAGES和READ_MEDIA_VIDEO但是云打包后仍然有这两个权限

在开发UniApp项目时,作者发现即使未声明READ_MEDIA_IMAGES和READ_MEDIA_VIDEO权限,云打包后应用仍具有这两个权限。经过调查,原因是UniApp的云开发平台默认添加了这些权限。通过修改配置文件,可以禁用不需要的权限,解决问题。
摘要由CSDN通过智能技术生成

前些天在开发一个基于UniApp的项目时,遇到了一个有趣的问题。我注意到在没有声明READ_MEDIA_IMAGESREAD_MEDIA_VIDEO权限的情况下,云打包后仍然具有这两个权限。

首先,回顾一下UniApp的基本知识。UniApp是一个跨平台的框架,允许我们使用Vue.js开发同时在多个平台上运行的应用程序。通过编写一次代码,我们可以在iOS、Android甚至是Web上构建应用。

在UniApp中,我们使用manifest.json文件来管理应用的配置信息。其中包括权限的声明。在这个特定的问题中,我没有明确声明READ_MEDIA_IMAGESREAD_MEDIA_VIDEO权限,但在打包后,应用程序仍然具有这些权限。

为了解决这个问题,我开始分析可能导致此行为的原因。首先,我检查了manifest.json文件,确保在其中没有声明这两个权限。然后,我思考是否可能在其他地方进行声明。

经过一番调查,我发现了可能的原因:UniApp使用了一个名为uniCloud的云开发平台,它可以为应用程序提供云端功能和服务。在使用uniCloud时,它会自动添加一些默认的权限,包括READ_MEDIA_IMAGESREAD_MEDIA_VIDEO。这样,我们就可以在应用程序中使用云端存储和处理媒体文件。

虽然这是一个很方便的功能,但在我的情况下,我并不需要这些权限。所以我需要找到一种方法来禁用它们。幸运的是,UniApp提供了一个配置文件manifest-unicloud.json

你可以使用 Android 的 Intent 和 startActivityForResult() 方法来实现选择相册中的照片或视频并在页面上展示。下面是详细的 Java 代码过程: 1. 在你的布局文件中添加一个按钮和一个用于展示图片或视频的 ImageView 或 VideoView。 ```xml <Button android:id="@+id/btn_select" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="选择照片或视频" /> <ImageView android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="centerCrop" android:visibility="invisible" /> <VideoView android:id="@+id/video_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="invisible" /> ``` 2. 在你的 Activity 或 Fragment 中找到按钮和 ImageView 或 VideoView,并设置点击事件。 ```java Button btnSelect = findViewById(R.id.btn_select); ImageView imageView = findViewById(R.id.image_view); VideoView videoView = findViewById(R.id.video_view); btnSelect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 创建一个 Intent,指定动作为选择图片或视频 Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); intent.setType("image/* video/*"); // 过滤只显示图片或视频 // 启动选择器,并希望获取结果 startActivityForResult(intent, REQUEST_CODE); } }); ``` 3. 在你的 Activity 或 Fragment 中重写 onActivityResult() 方法,获取选择的图片或视频的 Uri,并将其展示在 ImageView 或 VideoView 中。 ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) { Uri selectedUri = data.getData(); String mimeType = getContentResolver().getType(selectedUri); if (mimeType.startsWith("image/")) { // 如果选择的是图片 imageView.setVisibility(View.VISIBLE); videoView.setVisibility(View.INVISIBLE); imageView.setImageURI(selectedUri); } else if (mimeType.startsWith("video/")) { // 如果选择的是视频 imageView.setVisibility(View.INVISIBLE); videoView.setVisibility(View.VISIBLE); videoView.setVideoURI(selectedUri); videoView.start(); } } } ``` 这样,当用户点击按钮并选择了照片或视频后,选中的内容就会展示在页面上的 ImageView 或 VideoView 中了。记得在 AndroidManifest.xml 文件中添加读取外部存储权限(`<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />`),以便访问相册中的内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lishiyueup

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值