This commit is contained in:
2025-12-15 14:10:54 +08:00
parent 434f134f53
commit 2491213ca6
361 changed files with 7533 additions and 5354 deletions
@@ -4,6 +4,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
import com.netease.nim.uikit.common.ToastHelper;
import com.netease.nimlib.sdk.NIMClient;
@@ -59,7 +60,12 @@ public class NIMInitManager {
if (register) {
updateLocale();
IntentFilter filter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED);
DemoCache.getContext().registerReceiver(localeReceiver, filter);
// Android 13 (API 33) 及以上版本需要指定 RECEIVER_EXPORTED 或 RECEIVER_NOT_EXPORTED
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
DemoCache.getContext().registerReceiver(localeReceiver, filter, Context.RECEIVER_NOT_EXPORTED);
} else {
DemoCache.getContext().registerReceiver(localeReceiver, filter);
}
} else {
DemoCache.getContext().unregisterReceiver(localeReceiver);
}
@@ -6,6 +6,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import com.netease.nim.uikit.api.NimUIKit;
import com.netease.nim.uikit.api.model.contact.ContactChangedObserver;
@@ -176,7 +177,12 @@ public class OnlineStateEventManager {
private static void registerNetTypeChangeObserver() {
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
DemoCache.getContext().registerReceiver(receiver, filter);
// Android 13 (API 33) 及以上版本需要指定 RECEIVER_EXPORTED 或 RECEIVER_NOT_EXPORTED
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
DemoCache.getContext().registerReceiver(receiver, filter, Context.RECEIVER_NOT_EXPORTED);
} else {
DemoCache.getContext().registerReceiver(receiver, filter);
}
}
/**
@@ -374,10 +374,23 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
} else if (v == sendMessageButtonInInputBar) {
onTextMessageSendButtonPressed();
} else if (v == switchToAudioButtonInInputBar) {
// Android 13+ 录音只需要 RECORD_AUDIO 权限,不需要存储权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PermissionsUtil.hasPermission(container.activity, Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
//有访问录音
boolean hasPermission;
String[] permissionsToRequest;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
// Android 13+ 录音只需要 RECORD_AUDIO 权限
hasPermission = PermissionsUtil.hasPermission(container.activity, Manifest.permission.RECORD_AUDIO);
permissionsToRequest = new String[]{Manifest.permission.RECORD_AUDIO};
} else {
// Android 12及以下需要 RECORD_AUDIO 和存储权限
hasPermission = PermissionsUtil.hasPermission(container.activity, Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
permissionsToRequest = new String[]{Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
}
if (hasPermission) {
//有访问录音的权限
switchToAudioLayout();
} else {
EasyWindow.with(container.activity).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000)
@@ -397,7 +410,7 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
}
}, new String[]{Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
}, permissionsToRequest);
}
}
@@ -21,6 +21,7 @@ import java.io.IOException;
import java.util.List;
import cn.shangyu.gdxzExpert.R;
import cn.shangyu.gdxzExpert.activity.AllPhotosActivity;
import cn.shangyu.gdxzExpert.activity.PhotoAlbumActivity;
import cn.shangyu.gdxzExpert.ecdemo.common.utils.DemoUtils;
import cn.shangyu.gdxzExpert.ecdemo.common.utils.FileAccessor;
@@ -42,9 +43,16 @@ public class ImageAction extends BaseAction {
@Override
public void onClick() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PermissionsUtil.hasPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Intent intent=new Intent(getActivity(), PhotoAlbumActivity.class);
// Android 6.0 ~ 12 使用旧的存储权限
boolean hasPermission;
String[] permissionsToRequest;
hasPermission = PermissionsUtil.hasPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
permissionsToRequest = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (hasPermission) {
Intent intent=new Intent(getActivity(), AllPhotosActivity.class);
intent.putExtra("photonum", "-1");
getActivity().startActivityForResult(intent, 0x4);
} else {
@@ -55,7 +63,7 @@ public class ImageAction extends BaseAction {
@Override
public void permissionGranted(@NonNull String[] permissions) {
EasyWindow.cancelAll();
Intent intent=new Intent(getActivity(), PhotoAlbumActivity.class);
Intent intent=new Intent(getActivity(), AllPhotosActivity.class);
intent.putExtra("photonum", "-1");
getActivity().startActivityForResult(intent, 0x4);
}
@@ -63,18 +71,13 @@ public class ImageAction extends BaseAction {
@Override
public void permissionDenied(@NonNull String[] permissions) {
EasyWindow.cancelAll();
//用户拒绝了访问读写的申请
//
//用户拒绝了访问相册的申请
}
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE});
}, permissionsToRequest);
}
} else {
Intent intent=new Intent(getActivity(), PhotoAlbumActivity.class);
intent.putExtra("photonum", "-1");
getActivity().startActivityForResult(intent, 0x4);
}
}
/**
@@ -51,8 +51,21 @@ public class VideoAction extends BaseAction {
@Override
public void onClick() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PermissionsUtil.hasPermission(getActivity(), Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// Android 13+ (API 33+) 拍照主要需要 CAMERA 权限
boolean hasPermission;
String[] permissionsToRequest;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
// Android 13+ 拍照主要需要 CAMERA 权限
hasPermission = PermissionsUtil.hasPermission(getActivity(), Manifest.permission.CAMERA);
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
} else {
// Android 12及以下需要 CAMERA 和存储权限
hasPermission = PermissionsUtil.hasPermission(getActivity(), Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
}
if (hasPermission) {
//有访问摄像头的权限
showDialog();
} else {
@@ -73,7 +86,7 @@ public class VideoAction extends BaseAction {
}
}, new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
}, permissionsToRequest);
}
}
@@ -93,8 +106,22 @@ public class VideoAction extends BaseAction {
public void onDialogItemClick(Dialog d, int position) {
if (position == 0) {
// Android 13+ (API 33+) 拍照主要需要 CAMERA 权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PermissionsUtil.hasPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
boolean hasPermission;
String[] permissionsToRequest;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
// Android 13+ 拍照主要需要 CAMERA 权限
hasPermission = PermissionsUtil.hasPermission(getActivity(), Manifest.permission.CAMERA);
permissionsToRequest = new String[]{Manifest.permission.CAMERA};
} else {
// Android 12及以下需要 CAMERA 和存储权限
hasPermission = PermissionsUtil.hasPermission(getActivity(), Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
permissionsToRequest = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
}
if (hasPermission) {
// handleTackPicture();
takePhoto11();
} else {
@@ -112,11 +139,11 @@ public class VideoAction extends BaseAction {
@Override
public void permissionDenied(@NonNull String[] permissions) {
EasyWindow.cancelAll();
//用户拒绝了访问读写的申请
//用户拒绝了访问摄像头的申请
//
}
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE});
}, permissionsToRequest);
}
} else {
@@ -125,11 +152,23 @@ public class VideoAction extends BaseAction {
} else if (position == 1) {
// Android 13+ 录音只需要 RECORD_AUDIO 权限,不需要存储权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PermissionsUtil.hasPermission(getActivity(), Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
//有访问录音
boolean hasPermission;
String[] permissionsToRequest;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
// Android 13+ 录音只需要 RECORD_AUDIO 权限
hasPermission = PermissionsUtil.hasPermission(getActivity(), Manifest.permission.RECORD_AUDIO);
permissionsToRequest = new String[]{Manifest.permission.RECORD_AUDIO};
} else {
// Android 12及以下需要 RECORD_AUDIO 和存储权限
hasPermission = PermissionsUtil.hasPermission(getActivity(), Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
permissionsToRequest = new String[]{Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
}
if (hasPermission) {
//有访问录音的权限
handleVideoRecord();
} else {
EasyWindow.with(getActivity()).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000)
@@ -149,7 +188,7 @@ public class VideoAction extends BaseAction {
// finish();
}
}, new String[]{Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
}, permissionsToRequest);
}
}else {