Android 6.0及以上版本动态申请权限,11权限
生活随笔
收集整理的這篇文章主要介紹了
Android 6.0及以上版本动态申请权限,11权限
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {//安卓11文件權(quán)限// 先判斷有沒有權(quán)限if (Environment.isExternalStorageManager()) {//已有權(quán)限-----------------onHeadClick();} else {Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);intent.setData(Uri.parse("package:" + getPackageName()));startActivity(intent);return;} } if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {// TODO: Consider calling// ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding// public void onRequestPermissionsResult(int requestCode, String[] permissions,// int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return 1; }1.需要用戶手動賦予的權(quán)限( Dangerous Permissions)
| 日歷 | READ_CALENDAR |
| 日歷 | WRITE_CALENDAR |
| 相機 | CAMERA |
| 聯(lián)系人 | READ_CONTACTS |
| 聯(lián)系人 | WRITE_CONTACTS |
| 聯(lián)系人 | 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 |
還有指紋識別權(quán)限:
<uses-permission android:name="android.permission.USE_FINGERPRINT" /> 注意:如果應用程序請求在AndroidManifest中列出的危險權(quán)限,并且應用程序已經(jīng)在同一權(quán)限組中具有另一個危險權(quán)限,系統(tǒng)會立即授予權(quán)限,而不會與用戶進行任何交互,。例如,如果一個應用程序先前已經(jīng)請求并被授予READ_CONTACTS權(quán)限,然后它請求WRITE_CONTACTS(同屬于聯(lián)系人一組),系統(tǒng)會立即授予該權(quán)限,不會再彈出權(quán)限授予詢問的對話框。2.動態(tài)申請權(quán)限的方法:
首先,需要在AndroidManifest.xml靜態(tài)申請權(quán)限,否則無法動態(tài)申請權(quán)限,以下代碼位置不能放錯(在application之外):
<uses-permission android:name="android.permission.上表的權(quán)限字符" />3、java代碼申請權(quán)限、如下申請相機和文件讀寫權(quán)限
public class MainActivity extends AppCompatActivity {private static final String[] authBaseArr = {//申請類型Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE};private static final int authBaseRequestCode = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initNavi();//申請權(quán)限}private boolean hasBasePhoneAuth() {PackageManager pm = getPackageManager();for (String auth : authBaseArr) {if (pm.checkPermission(auth, getPackageName()) != PackageManager.PERMISSION_GRANTED) {return false;}}return true;}private void initNavi() {// 申請權(quán)限if (android.os.Build.VERSION.SDK_INT >= 23) {if (!hasBasePhoneAuth()) {this.requestPermissions(authBaseArr, authBaseRequestCode);return;}}}}3、實現(xiàn)方法2——簡便實現(xiàn)
1、添加依賴
implementation 'pub.devrel:easypermissions:1.2.0'2、申請權(quán)限
String[] perms = {Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION}; if (!EasyPermissions.hasPermissions(this, perms)) {EasyPermissions.requestPermissions(this, "App正常運行需要存儲權(quán)限、媒體權(quán)限", 1, perms); }4、獲取權(quán)限原生方法
ActivityCompat.requestPermissions(TongxunluActivity.this, new String[]{Manifest.permission.READ_CONTACTS}, 1); ActivityCompat.requestPermissions(TongxunluActivity.this, new String[]{Manifest.permission.READ_CONTACTS,Manifest.permission.READ_EXTERNAL_STORAGE}, 1); protected static String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_PHONE_STATE }; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {requestPermissions(permissions, 1);return; }總結(jié)
以上是生活随笔為你收集整理的Android 6.0及以上版本动态申请权限,11权限的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 2243 考研路茫茫——单词情结
- 下一篇: 【原】iphone6来了,我该做点什么(