android:動態申請權限(一)


環境:

android版本6.0

對應SDK版本23

動態申請權限說明:所有動態申請的權限,必須在AndroidManifest.xml中進行聲明

步驟

1、新建一個android工程

默認創建即可

2、AndroidManifest.xml 添加權限

這里以android.permission.READ_CONTACTS為例:

<uses-permission android:name="android.permission.READ_CONTACTS"/>

 

3、MainActivity

package com.xxx.xxx; import android.Manifest; import android.app.Activity; import android.content.pm.PackageManager; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends Activity { private static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 檢查是否有權限 if (checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { if (shouldShowRequestPermissionRationale(Manifest.permission.READ_CONTACTS)) { // 向用戶說明為什么需要該權限的提示 Toast.makeText(this, "Apply Reason:申請原因。。。", Toast.LENGTH_LONG).show(); } // 請求權限,系統會顯示一個獲取權限的提示對話框,當前應用不能配置和修改這個對話框 requestPermissions(new String[] { Manifest.permission.READ_CONTACTS }, MY_PERMISSIONS_REQUEST_READ_CONTACTS); return; } } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_READ_CONTACTS: { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 申請成功 Toast.makeText(this, "Apply Perssion Successfully", Toast.LENGTH_SHORT).show(); } else { // 申請失敗 Toast.makeText(this, "Apply Perssion Failed", Toast.LENGTH_SHORT).show(); // 當用戶選擇拒絕並勾選記住選擇存在問題 // 1、不重新申請的話,會永遠獲取不到權限 // 2、此處代碼,重新申請會陷入死循環,一直提示申請失敗,需要調整處理方式  } return; } } } }

說明:sdk版本低於23時,權限使用方法與此不同(需要導入android-support-v4.jar),如:

ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)

ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)

下載地址:http://www.pc0359.cn/downinfo/62688.html

將supportlibraryere\support\v7\appcompat\libs下的lib包引用工程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM