package com.dayu.pipirrapp.observer; import android.app.Activity; import android.text.InputType; import androidx.annotation.NonNull; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; import com.dayu.pipirrapp.R; import com.dayu.pipirrapp.activity.LoginActivity; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; import java.util.List; /** * author: zuo * Date: 2024-01-11 * Time: 15:47 * 备注:登录页相关逻辑 */ public class LoginObserver implements DefaultLifecycleObserver { protected String[] needPermissions = { Permission.ACCESS_COARSE_LOCATION, Permission.ACCESS_FINE_LOCATION, Permission.WRITE_EXTERNAL_STORAGE, Permission.READ_EXTERNAL_STORAGE, Permission.READ_PHONE_STATE }; Activity myActivity; public LoginObserver(@NonNull Activity activity) { myActivity = activity; } @Override public void onCreate(@NonNull LifecycleOwner owner) { DefaultLifecycleObserver.super.onCreate(owner); getPermissions(); } private void getPermissions() { try { XXPermissions.with(myActivity) // 申请单个权限 // .permission(Permission.RECORD_AUDIO) // 申请多个权限 .permission(needPermissions) // 设置权限请求拦截器(局部设置) //.interceptor(new PermissionInterceptor()) // 设置不触发错误检测机制(局部设置) //.unchecked() .request(new OnPermissionCallback() { @Override public void onGranted(@NonNull List permissions, boolean allGranted) { if (!allGranted) { // toast("获取部分权限成功,但部分权限未正常授予"); return; } // if (!XXPermissions.isGranted(myActivity, Permission.SYSTEM_ALERT_WINDOW)) { // new TipDialog(MainActivity.this, "请开启悬浮窗权限,允许本应用显示在其他应用的上层", new TipUtil.TipListener() { // @Override // public void onCancle() { // XXPermissions.startPermissionActivity(MainActivity.this, Permission.SYSTEM_ALERT_WINDOW); // } // }).show(); // } // toast("获取录音和日历权限成功"); } @Override public void onDenied(@NonNull List permissions, boolean doNotAskAgain) { if (doNotAskAgain) { // toast("被永久拒绝授权,请手动授予录音和日历权限"); // 如果是被永久拒绝就跳转到应用权限系统设置页面 } else { // toast("获取录音和日历权限失败"); } } }); } catch (Throwable e) { e.printStackTrace(); } } }