diff --git a/iFish7/src/main/AndroidManifest.xml b/iFish7/src/main/AndroidManifest.xml
index dbd46f869..7694f1aaa 100644
--- a/iFish7/src/main/AndroidManifest.xml
+++ b/iFish7/src/main/AndroidManifest.xml
@@ -140,9 +140,14 @@
android:maxSdkVersion="32" />
+ android:maxSdkVersion="32"
+ tools:ignore="ScopedStorage" />
+
+
+
@@ -225,6 +230,8 @@
android:label="@string/app_name"
android:theme="@style/MyAppTheme"
android:usesCleartextTraffic="true"
+ android:requestLegacyExternalStorage="true"
+ android:networkSecurityConfig="@xml/network_security_config"
tools:replace="android:icon,android:theme,android:allowBackup">
= Build.VERSION_CODES.TIRAMISU) {
+ LogUtils.d("LHD android 13不需要请求");
+ } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ //请求文件系统权限
+ LogUtils.d("LHD 请求MANAGE_EXTERNAL_STORAGE权限");
+ Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
+ intent.addCategory("android.intent.category.DEFAULT");
+ intent.setData(Uri.parse(String.format("package:%s", getActivity().getApplicationContext().getPackageName())));
+ startActivityForResult(intent, 301);
+ } else {
+ ActivityCompat.requestPermissions(getActivity(), new String[]{WRITE_EXTERNAL_STORAGE}, 302);
+ }
+ }
+
apkDownloadDialog = new Dialog(getActivity(), R.style.DefautDialogs);
apkDownloadDialog.setCancelable(false);
apkDownloadDialog.show();
@@ -833,7 +857,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
//第二个参数需要与标签中的android:authorities属性相同
- uri = UriForFile.getUriForFile(getActivity(),apkFile);
+ uri = UriForFile.getUriForFile(getActivity(), apkFile);
} else {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
uri = UriForFile.getUriForFile(getContext(), apkFile);
@@ -845,8 +869,20 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
- if (resultCode == Activity.RESULT_OK && requestCode == 300) {
+
+ if (requestCode == 300 && resultCode == Activity.RESULT_OK) {
installApk();
+ } else if (requestCode == 301) {
+ if (PermissionHelper.checkFilePermission(getActivity())) {
+ showDownloadApkDialog();
+ } else {
+ if (getActivity() != null) {
+ if (apkDownloadDialog != null) {
+ apkDownloadDialog.dismiss();
+ }
+ ToastUtil.show(getActivity(), "必须允许文件管理权限才能下载更新APP,请前往APP管理界面手动授权");
+ }
+ }
}
}
@@ -1125,7 +1161,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
i.setClass(getActivity(), MainSeven_2F_ControlActivity.class);
} else if (Device.TYPE_3F.equals(type)) {
i.setClass(getActivity(), MainFour_3F_ControlActivity.class);
- } else if (Device.TYPE_4F.equals(type) || Device.TYPE_5F.equals(type)){
+ } else if (Device.TYPE_4F.equals(type) || Device.TYPE_5F.equals(type)) {
i.setClass(getActivity(), MainSix_4F_ControlActivity.class);
} else {
if (controlAmount == null) {//如果控制器返回空 则默认给三控的页面
@@ -1693,7 +1729,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
firstResult = firstResult + HttpManager.PAGESIZE;
}
- },1000);
+ }, 1000);
}
private void getInformations() {
diff --git a/iFish7/src/main/java/com/ifish/permission/PermissionHelper.java b/iFish7/src/main/java/com/ifish/permission/PermissionHelper.java
index f39f04ace..4d9c82356 100644
--- a/iFish7/src/main/java/com/ifish/permission/PermissionHelper.java
+++ b/iFish7/src/main/java/com/ifish/permission/PermissionHelper.java
@@ -1,6 +1,9 @@
package com.ifish.permission;
+import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
+import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
+import static android.os.Build.VERSION.SDK_INT;
import static androidx.core.app.ActivityCompat.shouldShowRequestPermissionRationale;
import android.app.Activity;
@@ -9,6 +12,8 @@ import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
+import android.os.Build;
+import android.os.Environment;
import android.provider.Settings;
import androidx.annotation.NonNull;
@@ -198,6 +203,16 @@ public class PermissionHelper {
return shouldShowRequestPermissionRationale(act, permissions);
}
+ public static boolean checkFilePermission(Activity act) {
+ if (SDK_INT >= Build.VERSION_CODES.R) {
+ return Environment.isExternalStorageManager();
+ } else {
+ int result = ContextCompat.checkSelfPermission(act, READ_EXTERNAL_STORAGE);
+ int result1 = ContextCompat.checkSelfPermission(act, WRITE_EXTERNAL_STORAGE);
+ return result == PackageManager.PERMISSION_GRANTED && result1 == PackageManager.PERMISSION_GRANTED;
+ }
+ }
+
//===================
private boolean hasPermissionInManifest(String permission) {
try {
diff --git a/iFish7/src/main/res/xml/network_security_config.xml b/iFish7/src/main/res/xml/network_security_config.xml
new file mode 100644
index 000000000..dca93c079
--- /dev/null
+++ b/iFish7/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file