小编Hil*_*ryN的帖子

为什么当我请求 ACCESS_MEDIA_LOCATION 权限时没有显示权限框?

我正在尝试为 Android 10 实现 ACCESS_MEDIA_LOCATION 权限,以便访问照片的位置。

首先,应用程序请求 READ_EXTERNAL_STORAGE 权限,以便使用 MediaStore 访问照片。

然后应用程序使用 ExifInterface 读取照片的位置。在 Android 10 中,ExifInterface 失败,因为它没有权限。

我尝试为 ACCESS_MEDIA_LOCATION 添加权限请求,但没有出现权限请求框。但是,该许可随后被授予!

如果我在获得 READ_EXTERNAL_STORAGE 权限之前先请求 ACCESS_MEDIA_LOCATION,那么权限请求框就会出现。

如果我然后请求 READ_EXTERNAL_STORAGE 权限,则权限请求框不会出现,但同样,随后授予权限。(我知道这样做没有意义,但我只是想看看发生了什么。)

我真的很困惑。应该请求用户的许可才能访问照片的位置是有道理的,但是如果之前已授予 READ_EXTERNAL_STORAGE 权限,为什么 ACCESS_MEDIA_LOCATION 的权限框没有出现,为什么在没有用户同意的情况下授予权限?

有什么我遗漏的东西会使权限框出现吗?

下面的代码片段。

安卓清单:

<manifest ...>

        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        …
Run Code Online (Sandbox Code Playgroud)

片段1:

public class Fragment1 extends Fragment {
…
        public View onCreateView(...
                …
                Log.d(TAG, "Entering Fragment1 requestPermissions operation for permission READ_EXTERNAL_STORAGE");
                Log.d(TAG, "Permission ACCESS_MEDIA_LOCATION, " + this.requireContext().checkSelfPermission(Manifest.permission.ACCESS_MEDIA_LOCATION));
                Log.d(TAG, "Permission READ_EXTERNAL_STORAGE, …
Run Code Online (Sandbox Code Playgroud)

android android-permissions

5
推荐指数
0
解决办法
1028
查看次数

标签 统计

android ×1

android-permissions ×1