Android 6.0以上的許可權申請的問題

來源:互聯網
上載者:User
 一直都有許可權申請的問題,沒有足夠的重視,最近總是受到困擾,算了不說了,看代碼吧。

1、先判斷sdk的版本號碼
if (Build.VERSION.SDK_INT >= 23) {
checkAndRequestPermission();//檢查許可權
} else {
// 如果是Android6.0以下的機器,預設在安裝時獲得了所有許可權,可以直接調用SDK
}

2、@TargetApi(Build.VERSION_CODES.M)
private void checkAndRequestPermission() {
List lackedPermission = new ArrayList();
if (!(checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)) {
lackedPermission.add(Manifest.permission.READ_PHONE_STATE);
}

if (!(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)) {  lackedPermission.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);}if (!(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)) {  lackedPermission.add(Manifest.permission.ACCESS_FINE_LOCATION);}// 許可權都已經有了,那麼直接調用SDKif (lackedPermission.size() == 0) {  //處理自己的事} else {  // 請求所缺少的許可權,在onRequestPermissionsResult中再看是否獲得許可權,如果獲得許可權就可以調用SDK,否則不要調用SDK。  String[] requestPermissions = new String[lackedPermission.size()];  lackedPermission.toArray(requestPermissions);  requestPermissions(requestPermissions, 1024);}

}

private boolean hasAllPermissionsGranted(int[] grantResults) {
for (int grantResult : grantResults) {
if (grantResult == PackageManager.PERMISSION_DENIED) {
return false;
}
}
return true;
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 1024 && hasAllPermissionsGranted(grantResults)) {
fetchSplashAD(this, container, skipView, Constants.APPID, Constants.SplashPosID, this, 0);
} else {
// 如果使用者沒有授權,那麼應該說明意圖,引導使用者去設定裡面授權。
Toast.makeText(this, “應用缺少必要的許可權。請點擊\”許可權\”,開啟所需要的許可權。”, Toast.LENGTH_LONG).show();
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse(“package:” + getPackageName()));
startActivity(intent);
finish();
}
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.