网站建设任务书长沙网站建设大全
1、案例,打开app时,就要申请权限
直接在onCreateView中申请所有权限就可,然后在选择的回调里边判断申请的结果
package com.example.client;import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.view.View;
import android.widget.Toast;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import com.example.client.util.PermissionUtil;public class PermissionHungryActivity extends AppCompatActivity {private static final String[] PERMISSINS_CONTACTS_SMS = new String[]{Manifest.permission.READ_CONTACTS,Manifest.permission.WRITE_CONTACTS,Manifest.permission.SEND_SMS,Manifest.permission.READ_SMS};private static final int REQUEST_CODE_ALL = 1;private static final int REQUEST_CODE_CONTACTS = 2;private static final int REQUEST_CODE_SMS = 3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_permission_lazy);PermissionUtil.checkPermission(this, PERMISSINS_CONTACTS_SMS, REQUEST_CODE_ALL);}//请求读取联系人权限public void readCon(View view) {boolean flag = PermissionUtil.checkPermission(this, new String[]{PERMISSINS_CONTACTS_SMS[0], PERMISSINS_CONTACTS_SMS[1]}, REQUEST_CODE_CONTACTS);System.out.println("flag = " + flag);}//请求读取短信权限public void readMsg(View view) {boolean flag = PermissionUtil.checkPermission(this, new String[]{PERMISSINS_CONTACTS_SMS[2], PERMISSINS_CONTACTS_SMS[3]}, REQUEST_CODE_SMS);}//判断用户在弹窗中是否授权@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);switch (requestCode) {case REQUEST_CODE_ALL:if (PermissionUtil.checkGrant(grantResults)) {//如果都授权了Toast.makeText(this, "所有权限授权成功!", Toast.LENGTH_SHORT).show();} else {//部分权限获取失败ok:for (int i = 0; i < grantResults.length; i++) {if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {//判断是什么权限没有获取成功switch (permissions[i]) {case Manifest.permission.READ_SMS:case Manifest.permission.SEND_SMS:Toast.makeText(this, "短信读写权限获取失败!", Toast.LENGTH_SHORT).show();jumpToSettings();
// break; //仅仅是switch case的退出,而不是for循环,需要加ok 或者是returnbreak ok ;case Manifest.permission.READ_CONTACTS:case Manifest.permission.WRITE_CONTACTS:Toast.makeText(this, "通讯录读写权限获取失败!", Toast.LENGTH_SHORT).show();break;}}}}break;case REQUEST_CODE_CONTACTS:if (PermissionUtil.checkGrant(grantResults)) {//如果都授权了Toast.makeText(this, "通讯录读写权限获取成功", Toast.LENGTH_SHORT).show();} else {//获取通讯录读写权限失败Toast.makeText(this, "通讯录读写权限获取失败", Toast.LENGTH_SHORT).show();jumpToSettings();}break;case REQUEST_CODE_SMS:if (PermissionUtil.checkGrant(grantResults)) {//如果都授权了Toast.makeText(this, "短信读写权限获取成功", Toast.LENGTH_SHORT).show();} else {//获取通讯录读写权限失败Toast.makeText(this, "短信读写权限获取失败", Toast.LENGTH_SHORT).show();jumpToSettings();}break;}}//跳转到应用设置界面private void jumpToSettings() {Intent intent = new Intent();intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);intent.setData(Uri.fromParts("package", getPackageName(), null));intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);}
}