package com.dayu.pipirrapp.observer;
|
|
import android.app.Activity;
|
import android.text.TextUtils;
|
|
import androidx.annotation.NonNull;
|
import androidx.lifecycle.DefaultLifecycleObserver;
|
import androidx.lifecycle.LifecycleOwner;
|
|
import com.dayu.pipirrapp.MyApplication;
|
import com.dayu.pipirrapp.bean.db.TagBean;
|
import com.dayu.pipirrapp.dao.DaoSingleton;
|
import com.dayu.pipirrapp.view.TagDialog;
|
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<String> permissions, boolean allGranted) {
|
if (permissions.contains(Permission.WRITE_EXTERNAL_STORAGE)) {
|
TagBean tagBean = DaoSingleton.getInstance(myActivity).tagDao().findFirst();
|
if (tagBean == null || TextUtils.isEmpty(tagBean.getTag())) {
|
choesLibrary();
|
} else {
|
MyApplication.myApplication.myTag = tagBean.getTag();
|
}
|
}
|
if (!allGranted) {
|
// toast("获取部分权限成功,但部分权限未正常授予");
|
}
|
}
|
|
@Override
|
public void onDenied(@NonNull List<String> permissions, boolean doNotAskAgain) {
|
if (doNotAskAgain) {
|
// toast("被永久拒绝授权,请手动授予录音和日历权限");
|
// 如果是被永久拒绝就跳转到应用权限系统设置页面
|
} else {
|
// toast("获取录音和日历权限失败");
|
}
|
}
|
});
|
|
} catch (Throwable e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 选择版本
|
*/
|
public void choesLibrary() {
|
|
TagDialog dialog = new TagDialog(myActivity, type -> {
|
|
});
|
dialog.show();
|
}
|
}
|