簡體   English   中英

Android 6.0請勿征求權限

[英]Android 6.0 Don't Ask Permission

我遵循了android開發者教程和視頻,但是在電話上測試后,它不詢問權限,有什么想法嗎?

我將代碼放在ONCREATE內,並添加了所需的功能。 Android Studio執行沒有任何問題。

int REQUEST_READ_PHONE;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ...

    //PERMISSION CHECK
    if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
        //CHECK IF SERVICE IS RUNNING
        executeService();

        if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_PHONE_STATE)) {
            Toast.makeText(MainActivity.this, "Permission REQUIRED to work properly", Toast.LENGTH_LONG).show();
        }

        //REQUEST PERMISSION
        ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE);
    }

}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

    if (requestCode == REQUEST_READ_PHONE){

            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                //PERMISSION GRANTED
                executeService();
            } else {
                //PERMISSION DENIED permission denied
                Toast.makeText(MainActivity.this, "Application will not work properly", Toast.LENGTH_LONG).show();
            }
    } else {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

private void executeService() {
    //DO STUFF HERE
}

做兩件事

1)檢查目標SDK版本設置為23。

2)更改這段代碼

ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED

ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED

您的邏輯是錯誤的:

嘗試這個:

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
    executeService();
} else {

    if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_PHONE_STATE)) {
    Toast.makeText(MainActivity.this, "Permission REQUIRED to work properly", Toast.LENGTH_LONG).show();
    }

    //REQUEST PERMISSION
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE);

}

另外,您只會在運行Android 6.0的設備上看到“權限”對話框。

暫無
暫無

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

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