日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Android?permission?denied原因歸納和解決辦法_Android

作者:wchasedream ? 更新時間: 2022-03-07 編程語言

下面是我在學習android開發時遇到的permission denied的問題和解決辦法

1. net: ERR_CACHE_MISS

解決方法

在AndroidManifest.xml中加入 permission如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.xxx">
    <uses-permission android:name="android.permission.INTERNET"/>
    ...
</manifest>

2. 讀取寫入external storage(手機中的文件)

解決方法

首先,同樣需要在AndroidManifest.xml中加入 permission

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.xxx">
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!-- 下面這行代碼也非常重要,千萬不要忘記加-->
    <application
    ...
    android:requestLegacyExternalStorage="true">...</application>
</manifest>

其次還需要使得這個app獲得 存儲權限可以在手機 ->設置 -> 對應app 中進行設置,允許app讀取手機內存(最簡單的方法)。

更好的方法(正規的方法)是在打開app時,檢查app是否有權限讀取內存。如果沒有的話,提示用戶開啟 可以寫一個snackbar指向 這個app的settings。代碼如下:

/**
     * 檢查app是否擁有存儲權限,如果沒有的話,提醒用戶開啟權限
     */
    public void handlePermission() {
    	// 檢查是否開啟 Manifest.permission.xxx
    	// (xxx 為權限,根據自己需求添加)
        if (ActivityCompat.checkSelfPermission(this, 
                Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(this, "Permission has been allowed", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "ask for permission",Toast.LENGTH_SHORT).show();
            // 請求權限
            ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
            Log.d(TAG, "handlePermission: has aksed");
        }
    }

此函數可以根據自己需求放到 onCreate() method里面或者,listener() 里面。例如,如果放到onCreate() 里,打開此頁面時會提醒用戶開啟對應權限。

原文鏈接:https://blog.csdn.net/wchasedream/article/details/121995412

欄目分類
最近更新