下载逻辑,网络请求兼容android12
This commit is contained in:
parent
e5275ac743
commit
e53e0496d6
|
|
@ -140,9 +140,14 @@
|
|||
android:maxSdkVersion="32" />
|
||||
<uses-permission
|
||||
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="32" />
|
||||
android:maxSdkVersion="32"
|
||||
tools:ignore="ScopedStorage" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
||||
<!--在SDCard中创建与删除文件权限-->
|
||||
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
|
||||
tools:ignore="ProtectedPermissions" />
|
||||
|
||||
<!-- <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />-->
|
||||
|
||||
<!-- ###################声明友盟分享SDK使用的相关权限###################### -->
|
||||
|
|
@ -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">
|
||||
<meta-data
|
||||
android:name="android.max_aspect"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@
|
|||
*/
|
||||
package com.ifish.fragment;
|
||||
|
||||
import android.Manifest;
|
||||
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
|
|
@ -45,6 +46,7 @@ import android.widget.TextView;
|
|||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.ifish.activity.BindTwoDeviceActivity;
|
||||
|
|
@ -124,6 +126,7 @@ import com.lidroid.xutils.exception.HttpException;
|
|||
import com.lidroid.xutils.http.HttpHandler;
|
||||
import com.lidroid.xutils.http.ResponseInfo;
|
||||
import com.lidroid.xutils.http.callback.RequestCallBack;
|
||||
import com.lidroid.xutils.util.LogUtils;
|
||||
import com.p2p.core.MediaPlayer;
|
||||
import com.p2p.core.P2PHandler;
|
||||
import com.p2p.core.global.P2PConstants;
|
||||
|
|
@ -165,7 +168,9 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
|
|||
private String isMustUpdate = "";
|
||||
private String MustUpdate = "1";
|
||||
private HttpUtils http = new HttpUtils();
|
||||
private String apkPath = Environment.getExternalStorageDirectory() + "";//下载保存的地址
|
||||
// private String apkPath = Environment.getExternalStorageDirectory() + "";//下载保存的地址
|
||||
// private String apkPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "";//下载保存的地址
|
||||
private String apkPath = Environment.getDataDirectory()+ "";//下载保存的地址
|
||||
private File apkFile;//下载的文件
|
||||
private Dialog apkDownloadDialog;
|
||||
private NotificationManager mNotificationManager;
|
||||
|
|
@ -189,7 +194,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
|
|||
private PermissionHelper permissionHelper;
|
||||
|
||||
String[] permission;
|
||||
String[] permissionM = new String[]{android.Manifest.permission.CAMERA, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_PHONE_STATE};
|
||||
String[] permissionM = new String[]{android.Manifest.permission.CAMERA, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_PHONE_STATE};
|
||||
|
||||
String[] permission13 = new String[]{android.Manifest.permission.CAMERA, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.READ_PHONE_STATE};
|
||||
|
||||
|
|
@ -432,7 +437,7 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
|
|||
int parseInt = Integer.parseInt(p2PVerifyCode1);
|
||||
int parseInt2 = Integer.parseInt(p2PVerifyCode2);
|
||||
int s1 = -1;
|
||||
if(!TextUtils.isEmpty(sessionId)){
|
||||
if (!TextUtils.isEmpty(sessionId)) {
|
||||
s1 = Integer.parseInt(sessionId);
|
||||
}
|
||||
int s2 = -1;
|
||||
|
|
@ -665,6 +670,25 @@ public class DeviceFragment extends BaseV4Fragment implements ObservableScrollVi
|
|||
* 弹出下载进度条 开始下载apk
|
||||
*/
|
||||
private void showDownloadApkDialog() {
|
||||
LogUtils.d("LHD 展示下载框");
|
||||
//获取权限
|
||||
boolean hasPermission = PermissionHelper.checkFilePermission(getActivity());
|
||||
LogUtils.d("LHD 是否具有文件管理权限:" + hasPermission);
|
||||
if (!hasPermission) {
|
||||
if (Build.VERSION.SDK_INT >= 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);
|
||||
//第二个参数需要与<provider>标签中的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() {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<network-security-config>
|
||||
<base-config cleartextTrafficPermitted="true" />
|
||||
</network-security-config>
|
||||
Loading…
Reference in New Issue