簡體   English   中英

android api 23對話框警告權限未出現

[英]android api 23 dialog alert permission does not appear

在我的應用程序中,我需要android互聯網許可。

我已經在文件AndroidManifest.xml中插入了權限(具有其他權限)

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />

build.gradle默認配置具有正確的api級別:

defaultConfig {
        applicationId "com.mytry"
        minSdkVersion 23
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }

與互聯網通話的活動是這樣的:

public class ActivityLoginScreen extends Activity{

    final int REQUEST_INTERNET = 1;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {

            if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.INTERNET)) {
                //permesso già richiesto in precedenza. Negato dall'utente
            } else {
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.INTERNET}, REQUEST_INTERNET);
            }
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
        switch (requestCode) {
            case REQUEST_INTERNET: {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(this, "GRANTED", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(this, "NO GRANTED", Toast.LENGTH_SHORT).show();
                }
                return;
            }
        }
    }

但是,當我啟動我的應用程序並參加活動時,沒有任何意義。 如果我進入應用程序設置模擬器,則只能看到2個權限。

在此處輸入圖片說明 這個問題的可能解決方案? 我哪里錯了?

我在其他應用程序中使用了這種類型的請求,沒有問題

謝謝。

編輯:

對於所有注釋,請鍵入以下內容:“無需請求,因為:如果應用程序聲明需要正常權限,則系統會自動將權限授予該應用程序”

這是對的。 對不起這個愚蠢的問題。 我知道默認權限的問題,但是我的appa仍然無法正常工作,因為它給Internet權限帶來了錯誤。 我創建了一個新的模擬器,現在好像要運行了。

並非所有權限都需要由用戶授予。 根據Android文檔

系統權限分為兩類:正常和危險:

  • 普通權限不會直接危害用戶的隱私。 如果您的應用在清單中列出了正常權限,則系統會自動授予該權限。

  • 危險權限可以使應用程序訪問用戶的機密數據。 如果您的應用在清單中列出了正常權限,則系統會自動授予該權限。 如果您列出了危險許可,則用戶必須明確批准您的應用。

如果許可屬於危險許可類別(例如:位置,存儲,攝像頭等),則只需要檢查許可即可

默認情況下會授予Internet權限。

它不需要用戶授予它,因此您已經具有Internet權限,只需啟用您的Internet。

普通權限涵蓋了您的應用需要訪問其沙盒外部的數據或資源的區域,但這些區域對用戶的隱私或其他應用的操作造成的風險很小。 例如,設置時區的權限是普通權限。 如果應用程序聲明需要正常權限,則系統會自動將權限授予該應用程序。 有關當前普通權限的完整列表,請參閱普通權限

從API級別23開始,以下權限分類為PROTECTION_NORMAL

對於這些,不會向用戶顯示任何日記,系統將自動授予權限。

 ACCESS_LOCATION_EXTRA_COMMANDS ACCESS_NETWORK_STATE ACCESS_NOTIFICATION_POLICY ACCESS_WIFI_STATE BLUETOOTH BLUETOOTH_ADMIN BROADCAST_STICKY CHANGE_NETWORK_STATE CHANGE_WIFI_MULTICAST_STATE CHANGE_WIFI_STATE DISABLE_KEYGUARD EXPAND_STATUS_BAR GET_PACKAGE_SIZE INSTALL_SHORTCUT INTERNET KILL_BACKGROUND_PROCESSES MODIFY_AUDIO_SETTINGS NFC READ_SYNC_SETTINGS READ_SYNC_STATS RECEIVE_BOOT_COMPLETED REORDER_TASKS REQUEST_IGNORE_BATTERY_OPTIMIZATIONS REQUEST_INSTALL_PACKAGES SET_ALARM SET_TIME_ZONE SET_WALLPAPER SET_WALLPAPER_HINTS TRANSMIT_IR UNINSTALL_SHORTCUT USE_FINGERPRINT VIBRATE WAKE_LOCK WRITE_SYNC_SETTINGS 

所有危險的Android系統權限均屬於權限組。 如果設備運行的是Android 6.0(API級別23)

PROTECTION_DANGEROUS權限:

這些權限將向用戶顯示對話框。 樣例代碼

 READ_CALENDAR WRITE_CALENDAR CAMERA READ_CONTACTS WRITE_CONTACTS GET_ACCOUNTS ACCESS_FINE_LOCATION ACCESS_COARSE_LOCATION RECORD_AUDIO READ_PHONE_STATE CALL_PHONE READ_CALL_LOG WRITE_CALL_LOG ADD_VOICEMAIL USE_SIP PROCESS_OUTGOING_CALLS BODY_SENSORS SEND_SMS RECEIVE_SMS READ_SMS RECEIVE_WAP_PUSH RECEIVE_MMS READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM