This commit is contained in:
jia 2024-12-08 01:30:46 +08:00
parent 7f655581a9
commit 1177d9fc90
5 changed files with 158 additions and 184 deletions

View File

@ -26,5 +26,5 @@ android.enableJetifier=true
android.useAndroidX=true android.useAndroidX=true
android.useDeprecatedNdk=true android.useDeprecatedNdk=true
versionCode=58 versionCode=40
versionName=4.11.17.3 versionName=4.11.17.3

View File

@ -138,16 +138,17 @@ public class LoadingActivity extends BaseActivityNotAnim {
if (savedInstanceState != null) { if (savedInstanceState != null) {
setIntent(new Intent()); // 从堆栈恢复不再重复解析之前的intent setIntent(new Intent()); // 从堆栈恢复不再重复解析之前的intent
} }
permission = AppUtil.getPermissionList(); // permission = AppUtil.getPermissionList();
permissionHelper = new PermissionHelper(LoadingActivity.this, permission, 250); // permissionHelper = new PermissionHelper(LoadingActivity.this, permission, 250);
//
Boolean showPrivacy = SPUtil.getInstance(getApplicationContext()).getBoolean(firstShowPrivacy, false); // Boolean showPrivacy = SPUtil.getInstance(getApplicationContext()).getBoolean(firstShowPrivacy, false);
Boolean aBoolean = ConfigUtil.getInstance(getApplicationContext()).getBoolean(LoginSPKey.IS_FirstOpen, false); // Boolean aBoolean = ConfigUtil.getInstance(getApplicationContext()).getBoolean(LoginSPKey.IS_FirstOpen, false);
if(!aBoolean && !showPrivacy){ // if(!aBoolean && !showPrivacy){
startPrivacyTextDialog(); // startPrivacyTextDialog();
}else{ // }else{
getPermission(); // getPermission();
} // }
initapp();
} }
private void analysisBaseUrlError(){ private void analysisBaseUrlError(){

View File

@ -291,10 +291,11 @@ public class MineActivity extends BaseActivity {
private void changeHead() { private void changeHead() {
if (!permissionHelper.checkSelfPermission(permission)) { if (!permissionHelper.checkSelfPermission(permission)) {
getPermission(); showPermissionHint();
return; } else {
gallery();
} }
gallery();
// final Dialog dialogHead = new Dialog(MineActivity.this, R.style.HOLOMyDialogs); // final Dialog dialogHead = new Dialog(MineActivity.this, R.style.HOLOMyDialogs);
// dialogHead.show(); // dialogHead.show();
// Window window = dialogHead.getWindow(); // Window window = dialogHead.getWindow();
@ -774,7 +775,7 @@ public class MineActivity extends BaseActivity {
dialog.setCancelable(false); dialog.setCancelable(false);
dialog.setTitle("温馨提示"); dialog.setTitle("温馨提示");
// dialog.setMessage("请到应用管理-爱鱼奇-应用权限页面开启权限后重新打开app"); // dialog.setMessage("请到应用管理-爱鱼奇-应用权限页面开启权限后重新打开app");
dialog.setMessage("请到应用信息页面-权限管理-打开存储和相机权限"); dialog.setMessage("请到应用信息页面-权限管理-打开图片和相机权限");
dialog.setPositiveButton("去开启", (dialog1, which) -> { dialog.setPositiveButton("去开启", (dialog1, which) -> {
AppUtil.toAuthority(MineActivity.this); AppUtil.toAuthority(MineActivity.this);
}); });
@ -791,4 +792,19 @@ public class MineActivity extends BaseActivity {
permissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults); permissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);
} }
} }
private void showPermissionHint(){
AlertDialog.Builder dialog = new AlertDialog.Builder(this, AlertDialog.THEME_HOLO_LIGHT);
dialog.setCancelable(false);
dialog.setTitle("提示");
dialog.setMessage("设置头像,需要申请相机和相册权限,是否允许申请?");
dialog.setNegativeButton("拒绝", (arg0, arg1) -> {
arg0.dismiss();
});
dialog.setPositiveButton("允许", (dialog1, which) -> {
getPermission();
});
dialog.show();
}
} }

View File

@ -272,11 +272,8 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
AlertDialog.Builder dialog = new AlertDialog.Builder(getContext()); AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
dialog.setCancelable(false); dialog.setCancelable(false);
dialog.setTitle("温馨提示"); dialog.setTitle("温馨提示");
// dialog.setMessage("请到应用管理-爱鱼奇-应用权限页面开启权限后重新打开app");
dialog.setMessage("请到应用信息页面-权限管理-打开位置权限,不然是发现不了附近的wifi的将无法进行配网连接您的智能设备"); dialog.setMessage("请到应用信息页面-权限管理-打开位置权限,不然是发现不了附近的wifi的将无法进行配网连接您的智能设备");
dialog.setPositiveButton("去开启", (dialog1, which) -> { dialog.setPositiveButton("去开启", (dialog1, which) -> {
// Intent mItent = new Intent(Settings.ACTION_SETTINGS);
// startActivity(mItent);
AppUtil.toAuthority(requireActivity()); AppUtil.toAuthority(requireActivity());
}); });
dialog.setNegativeButton("取消", (dialog12, which) -> { dialog.setNegativeButton("取消", (dialog12, which) -> {
@ -687,118 +684,118 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
intent.setData(Uri.parse(String.format("package:%s", getActivity().getApplicationContext().getPackageName()))); intent.setData(Uri.parse(String.format("package:%s", getActivity().getApplicationContext().getPackageName())));
startActivityForResult(intent, 301); startActivityForResult(intent, 301);
} else { } else {
ActivityCompat.requestPermissions(getActivity(), new String[]{WRITE_EXTERNAL_STORAGE}, 302); ActivityCompat.requestPermissions(getActivity(), new String[]{WRITE_EXTERNAL_STORAGE}, 301);
} }
} }else {
apkDownloadDialog = new Dialog(getActivity(), R.style.DefautDialogs);
apkDownloadDialog = new Dialog(getActivity(), R.style.DefautDialogs); apkDownloadDialog.setCancelable(false);
apkDownloadDialog.setCancelable(false); apkDownloadDialog.show();
apkDownloadDialog.show(); Window window = apkDownloadDialog.getWindow();
Window window = apkDownloadDialog.getWindow(); window.setContentView(R.layout.dialog_downloadapk);
window.setContentView(R.layout.dialog_downloadapk); final TextView tv_title = (TextView) window.findViewById(R.id.tv_title);
final TextView tv_title = (TextView) window.findViewById(R.id.tv_title); final TextView tv_current = (TextView) window.findViewById(R.id.tv_current);
final TextView tv_current = (TextView) window.findViewById(R.id.tv_current); final ProgressBar progess_bar = (ProgressBar) window.findViewById(R.id.progess_bar);
final ProgressBar progess_bar = (ProgressBar) window.findViewById(R.id.progess_bar); final Button bt_redownload = (Button) window.findViewById(R.id.bt_redownload);
final Button bt_redownload = (Button) window.findViewById(R.id.bt_redownload); final String downloaded = "maybe the file has downloaded completely";//如果文件已经下载好 就会抛出此异常 可以判断此异常直接打开文件
final String downloaded = "maybe the file has downloaded completely";//如果文件已经下载好 就会抛出此异常 可以判断此异常直接打开文件 /**
/** * 下载apk
* 下载apk */
*/ L.i("====================appAddress=" + appAddress + "+path=" + apkPath);
L.i("====================appAddress=" + appAddress + "+path=" + apkPath); http.download(appAddress, apkPath, false, false, new RequestCallBack<File>() {
http.download(appAddress, apkPath, false, false, new RequestCallBack<File>() { @Override
@Override public void onStart() {
public void onStart() { super.onStart();
super.onStart(); tv_title.setText("开始下载...");
tv_title.setText("开始下载..."); tv_current.setText("0%");
tv_current.setText("0%"); bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏
bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏 progess_bar.setProgress(0);//进度条初始
progess_bar.setProgress(0);//进度条初始
}
@Override
public void onLoading(long total, long current, boolean isUploading) {
super.onLoading(total, current, isUploading);
progess_bar.setProgress((int) ((double) current / (double) total * 100));
double currentA = (double) (current) / (1024 * 1024);//byte转MB除以1024*1024
double totaldB = (double) total / (1024 * 1024);
String formatA = String.format("%.2f", currentA);//只保留2位小数
String formatB = String.format("%.2f", totaldB);
tv_title.setText("下载中 " + formatA + "MB/" + formatB + "MB");
tv_current.setText((int) (current * 100 / total) + "%");
}
@Override
public void onFailure(HttpException arg0, String msg) {
L.i(msg);
if (downloaded.equals(msg)) {//已经存在要下载的文件 会抛出此异常 可以直接安装
progess_bar.setProgress(100);//进度条填满
tv_title.setText("安装包已存在");
apkFile = new File(apkPath);
installApk();
} else {
ToastUtil.show(getActivity(), Text.ERROR);
bt_redownload.setVisibility(View.VISIBLE); //网络错误下载失败时 把重新下载按钮显示
} }
}
@Override @Override
public void onSuccess(ResponseInfo<File> arg0) { public void onLoading(long total, long current, boolean isUploading) {
bt_redownload.setVisibility(View.GONE);//下载成功 把重新下载按钮隐藏 并跳转安装apk super.onLoading(total, current, isUploading);
tv_title.setText("安装包下载成功"); progess_bar.setProgress((int) ((double) current / (double) total * 100));
apkFile = arg0.result; double currentA = (double) (current) / (1024 * 1024);//byte转MB除以1024*1024
installApk(); double totaldB = (double) total / (1024 * 1024);
} String formatA = String.format("%.2f", currentA);//只保留2位小数
}); String formatB = String.format("%.2f", totaldB);
bt_redownload.setOnClickListener(new OnClickListener() { tv_title.setText("下载中 " + formatA + "MB/" + formatB + "MB");
@Override tv_current.setText((int) (current * 100 / total) + "%");
public void onClick(View v) { }
delApk();//删除apk
bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏
http.download(appAddress, apkPath, false, false, new RequestCallBack<File>() {
@Override
public void onStart() {
super.onStart();
tv_title.setText("开始下载...");
tv_current.setText("0%");
bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏
progess_bar.setProgress(0);//进度条初始
}
@Override @Override
public void onLoading(long total, long current, boolean isUploading) { public void onFailure(HttpException arg0, String msg) {
super.onLoading(total, current, isUploading); L.i(msg);
progess_bar.setProgress((int) ((double) current / (double) total * 100)); if (downloaded.equals(msg)) {//已经存在要下载的文件 会抛出此异常 可以直接安装
double currentA = (double) (current) / (1024 * 1024);//byte转MB除以1024*1024 progess_bar.setProgress(100);//进度条填满
double totaldB = (double) total / (1024 * 1024); tv_title.setText("安装包已存在");
String formatA = String.format("%.2f", currentA);//只保留2位小数 apkFile = new File(apkPath);
String formatB = String.format("%.2f", totaldB);
tv_title.setText("下载中 " + formatA + "MB/" + formatB + "MB");
tv_current.setText((int) (current * 100 / total) + "%");
}
@Override
public void onFailure(HttpException arg0, String msg) {
if (downloaded.equals(msg)) {//已经存在要下载的文件 会抛出此异常 可以直接安装
progess_bar.setProgress(100);//进度条填满
tv_title.setText("安装包已存在");
apkFile = new File(apkPath);
installApk();
} else {
ToastUtil.show(getActivity(), Text.ERROR);
bt_redownload.setVisibility(View.VISIBLE); //网络错误下载失败时 把重新下载按钮显示
}
}
@Override
public void onSuccess(ResponseInfo<File> arg0) {
bt_redownload.setVisibility(View.GONE);//下载成功 把重新下载按钮隐藏 并跳转安装apk
tv_title.setText("安装包下载成功");
apkFile = arg0.result;
installApk(); installApk();
} else {
ToastUtil.show(getActivity(), Text.ERROR);
bt_redownload.setVisibility(View.VISIBLE); //网络错误下载失败时 把重新下载按钮显示
} }
}); }
}
}); @Override
public void onSuccess(ResponseInfo<File> arg0) {
bt_redownload.setVisibility(View.GONE);//下载成功 把重新下载按钮隐藏 并跳转安装apk
tv_title.setText("安装包下载成功");
apkFile = arg0.result;
installApk();
}
});
bt_redownload.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
delApk();//删除apk
bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏
http.download(appAddress, apkPath, false, false, new RequestCallBack<File>() {
@Override
public void onStart() {
super.onStart();
tv_title.setText("开始下载...");
tv_current.setText("0%");
bt_redownload.setVisibility(View.GONE);//开始下载时 把重新下载按钮隐藏
progess_bar.setProgress(0);//进度条初始
}
@Override
public void onLoading(long total, long current, boolean isUploading) {
super.onLoading(total, current, isUploading);
progess_bar.setProgress((int) ((double) current / (double) total * 100));
double currentA = (double) (current) / (1024 * 1024);//byte转MB除以1024*1024
double totaldB = (double) total / (1024 * 1024);
String formatA = String.format("%.2f", currentA);//只保留2位小数
String formatB = String.format("%.2f", totaldB);
tv_title.setText("下载中 " + formatA + "MB/" + formatB + "MB");
tv_current.setText((int) (current * 100 / total) + "%");
}
@Override
public void onFailure(HttpException arg0, String msg) {
if (downloaded.equals(msg)) {//已经存在要下载的文件 会抛出此异常 可以直接安装
progess_bar.setProgress(100);//进度条填满
tv_title.setText("安装包已存在");
apkFile = new File(apkPath);
installApk();
} else {
ToastUtil.show(getActivity(), Text.ERROR);
bt_redownload.setVisibility(View.VISIBLE); //网络错误下载失败时 把重新下载按钮显示
}
}
@Override
public void onSuccess(ResponseInfo<File> arg0) {
bt_redownload.setVisibility(View.GONE);//下载成功 把重新下载按钮隐藏 并跳转安装apk
tv_title.setText("安装包下载成功");
apkFile = arg0.result;
installApk();
}
});
}
});
}
} }
/** /**
@ -1543,31 +1540,14 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
// EventBean eventBean = new EventBean(EventBean.BLUETOOTH_STOP_SCAN); // EventBean eventBean = new EventBean(EventBean.BLUETOOTH_STOP_SCAN);
// EventBus.getDefault().post(eventBean); // EventBus.getDefault().post(eventBean);
if (!permissionHelper.checkSelfPermission(permission)) { if (!permissionHelper.checkSelfPermission(permission)) {
getPermission(); showPermissionHint();
return; }else {
intent.setClass(getActivity(), BindTwoDeviceActivity.class);
startActivity(intent);
AnimationUtil.startAnimation(getActivity());
} }
intent.setClass(getActivity(), BindTwoDeviceActivity.class);
startActivity(intent);
AnimationUtil.startAnimation(getActivity());
// hm.shareCameraByQrCode(new HttpListener<BaseBean<Camera>>() {
// private int result;
// @Override
// public void success(BaseBean<Camera> baseBean) {
// result = baseBean.result;
//// dataDevice = baseBean.data;
// }
//
// @Override
// public void finish() {
//
// }
//
// @Override
// public void error(Exception e, String msg) {
//
// }
// }, Commons.USER.getUserId(), "19125526");
break; break;
case R.id.tv_explain: //我的设备---查看说明书 case R.id.tv_explain: //我的设备---查看说明书
/*intent.setClass(getActivity(), WebViewActivity.class); /*intent.setClass(getActivity(), WebViewActivity.class);
@ -1951,6 +1931,20 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
// } // }
// } // }
private void showPermissionHint(){
AlertDialog.Builder dialog = new AlertDialog.Builder(requireContext(), AlertDialog.THEME_HOLO_LIGHT);
dialog.setCancelable(false);
dialog.setTitle("提示");
dialog.setMessage("添加设备需要获取位置信息才能获取附近wifi信息进行配网连接您的设备是否允许申请");
dialog.setNegativeButton("拒绝", (arg0, arg1) -> {
arg0.dismiss();
});
dialog.setPositiveButton("允许", (dialog1, which) -> {
getPermission();
});
dialog.show();
}
public void showDevice(){ public void showDevice(){
// 检测页面 // 检测页面
if (!isShowIng){ if (!isShowIng){

View File

@ -260,43 +260,6 @@ public class AppUtil {
} }
public static String [] getPermissionList(){
List<String> perList = new ArrayList<>();
perList.add(android.Manifest.permission.CAMERA);
perList.add(android.Manifest.permission.ACCESS_FINE_LOCATION);
// perList.add(android.Manifest.permission.READ_PHONE_STATE);
// jiablue
// perList.add(android.Manifest.permission.BLUETOOTH);
// perList.add(android.Manifest.permission.ACCESS_COARSE_LOCATION);
// perList.add(android.Manifest.permission.ACCESS_FINE_LOCATION);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
perList.add(android.Manifest.permission.READ_MEDIA_IMAGES);
perList.add(android.Manifest.permission.READ_MEDIA_VIDEO);
// jiablue
// perList.add(android.Manifest.permission.BLUETOOTH_SCAN);
// perList.add(android.Manifest.permission.BLUETOOTH_ADVERTISE);
// perList.add(android.Manifest.permission.BLUETOOTH_CONNECT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){
// jiablue
// perList.add(android.Manifest.permission.BLUETOOTH_SCAN);
// perList.add(android.Manifest.permission.BLUETOOTH_ADVERTISE);
// perList.add(android.Manifest.permission.BLUETOOTH_CONNECT);
perList.add(android.Manifest.permission.READ_EXTERNAL_STORAGE);
perList.add(android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
}else {
perList.add(android.Manifest.permission.READ_EXTERNAL_STORAGE);
perList.add(android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
int size = perList.size();
String [] permissions = new String[size];
for (int i = 0;i<size;i++){
permissions[i] = perList.get(i);
}
return permissions;
}
public static String [] getImagePermissionList(){ public static String [] getImagePermissionList(){
List<String> perList = new ArrayList<>(); List<String> perList = new ArrayList<>();
perList.add(android.Manifest.permission.CAMERA); perList.add(android.Manifest.permission.CAMERA);