Merge branch 'newlj2' into newlj2toyybc

This commit is contained in:
lijia 2024-12-31 16:41:00 +08:00
commit 66b581c296
16 changed files with 365 additions and 64 deletions

View File

@ -38,8 +38,8 @@ android {
applicationId "com.arpa.hndahesudintocctmsdriver"
minSdkVersion 24
targetSdkVersion 30
versionCode 76
versionName "3.4.6"
versionCode 77
versionName "3.4.7"
flavorDimensions "CHANNEL_VALUE"
flavorDimensions "app_icon"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

View File

@ -232,6 +232,10 @@ public class H5Activity extends AppCompatActivity {
} else {
String url = intent.getStringExtra("url");
if (TextUtils.isEmpty(url)) {
ActivityUtils.finishToActivity(MainActivity.class, false);
return;
}
viewFile = intent.getBooleanExtra("view_file", false);
if (url.startsWith("alipay")) {
try {

View File

@ -68,9 +68,18 @@ public class CarListBean {
private Object carImage;
private String owner;
private String vehicleNumber;
private String outInvoice;
private int auditStatus;
private String drivingLicenseValidity;
public String getOutInvoice() {
return outInvoice;
}
public void setOutInvoice(String outInvoice) {
this.outInvoice = outInvoice;
}
public String getCarNumber() {
return carNumber == null ? "" : carNumber;
}

View File

@ -55,15 +55,15 @@ class MessagePop(context: Context) : CenterPopupView(context), View.OnClickListe
}
R.id.tvOk,R.id.tvPhone -> {
dismiss()
if (XPermission.create(context).isGranted(Manifest.permission.CALL_PHONE)){
// if (XPermission.create(context).isGranted(Manifest.permission.CALL_PHONE)){
val toString = tvPhone.text.toString()
val intent = Intent(Intent.ACTION_DIAL)
val data = Uri.parse("tel:$toString")
intent.data = data
context.startActivity(intent)
}else{
ToastUtils.showToast(context,"请开启电话权限")
}
// }else{
// ToastUtils.showToast(context,"请开启电话权限")
// }
// BaseUtils.callPhone(content as Activity, tvPhone.text.toString())
}

View File

@ -2,6 +2,7 @@ package com.arpa.hndahesudintocctmsdriver.report;
import android.content.Context;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import com.alct.mdp.MDPLocationCollectionManager;
@ -156,11 +157,15 @@ public class ALProcess {
}
public static void verification(Context con,Handler hd){
public static void verification(Context con,String carNum,Handler hd){
DriverAuthDataBean auth= AuthParts.getAuth(con);
if (auth==null){
return;
}
if (TextUtils.isEmpty(carNum)){
ToastUtils.showToast(con,"请选择车辆");
return;
}
// Identity idy=new Identity();
// //企业代码
// idy.setEnterpriseCode(BuildConfig.isTest?ENTERPRISE_CODE_TEXT:ENTERPRISE_CODE);
@ -187,7 +192,8 @@ public class ALProcess {
// }
// });
NewLJUtils.getInstance().searchDriver(con, auth.getData().getIdcard(), new OnGDDownloadResultListener(){
NewLJUtils.getInstance().trucks(con, auth.getData().getIdcard(),carNum, new OnGDDownloadResultListener(){
@Override
public void onSuccess(String var1) {
MsgUtil.addHdMsgWatBody(hd, 1111,"认证成功");
@ -199,6 +205,18 @@ public class ALProcess {
}
});
// NewLJUtils.getInstance().searchDriver(con, auth.getData().getIdcard(), new OnGDDownloadResultListener(){
// @Override
// public void onSuccess(String var1) {
// MsgUtil.addHdMsgWatBody(hd, 1111,"认证成功");
// }
//
// @Override
// public void onFailure(String var1, String var2) {
// MsgUtil.addHdMsgWatBody(hd, 2222,var2);
// }
// });
// NewLJUtils.getInstance().getToken(con, new OnGDResultListener() {
// @Override
// public void onSuccess() {

View File

@ -119,6 +119,9 @@ public class JTTProcess {
//参数 ShippingNoteInfo start 接口中的参数 ShippingNoteInfo
//这里 shippingNoteInfo 信息只需传入运单号和分单号即可
public static void send(Context con,StartOrderBean sob,String remark){
if (sob.getData()==null){
return;
}
ShippingNoteInfo[] snis=new ShippingNoteInfo[1];
ShippingNoteInfo sni=new ShippingNoteInfo();
sni.setShippingNoteNumber(sob.getData().getShippingNoteNumber());

View File

@ -152,5 +152,14 @@ public interface Api {
@GET(BASE_URL+"/openapi/drivers")
Observable<CommonResponseBean> searchDriver(@Query("identityNo") String identityNo);
/**
* 司机车辆绑定关系
* @param identityNo
* @return
*/
@GET(BASE_URL+"openapi/drivers/{identityNo}/trucks")
Observable<CommonResponseBean> trucks(@Path("identityNo") String identityNo);
}

View File

@ -1220,14 +1220,29 @@ public class CertificatesActivity extends BaseAppCompatActivity {
iib.setDriverLicense(str1);
iib.setDriverLicenseBackPhoto(backId);
iib.setDriverLicensePhoto(fontId);
iib.setEndTime("长期".equals(odl.getData().getEndDate()) ? "2999-12-31" : odl.getData().getEndDate());
if ("长期".equals(odl.getData().getEndDate())){
iib.setEndTime("2999-12-31");
}else if (TimeUtil.isValidDate(odl.getData().getEndDate())){//非yyyy-MM-dd格式的日期传""
iib.setEndTime(odl.getData().getEndDate());
}else{
iib.setEndTime("");
}
// iib.setEndTime("长期".equals(odl.getData().getEndDate()) ? "2999-12-31" : odl.getData().getEndDate());
iib.setFirstTime(odl.getData().getFirstGetDocDate());
// iib.setName(odl.getData().getName());
iib.setOrganizationName(odl.getData().getIssuingAuthority());
iib.setAddress(odl.getData().getAddress());
iib.setStartTime(odl.getData().getBeginDate());
if (TimeUtil.isValidDate(odl.getData().getBeginDate())){//非yyyy-MM-dd格式的日期传""
iib.setStartTime(odl.getData().getBeginDate());
}else{
iib.setStartTime("");
}
// iib.setStartTime(odl.getData().getBeginDate());
iib.setSex(odl.getData().getSex());
iib.setBirthday(odl.getData().getBirthday());

View File

@ -731,6 +731,7 @@ public class HomeFragment extends BaseFragment {
if (zStatus == 0) {//未装货
Intent in = new Intent(con, ShangChuangImgActivityBC.class);
in.putExtra("type", 0);
in.putExtra("reportAlct", data.getReportAlct());
in.putExtra("wid", zData.getId() + "");
in.putExtra("sob", gson.toJson(sob));
in.putExtra("keys", true);
@ -738,6 +739,7 @@ public class HomeFragment extends BaseFragment {
} else if (zStatus == 1 && xStatus == 4) {//已装货未上传回单
Intent in = new Intent(con, ShangChuangImgActivityBC.class);
in.putExtra("type", 2);
in.putExtra("reportAlct", data.getReportAlct());
in.putExtra("wid", zData.getId() + "");
in.putExtra("h_type", 0);
in.putExtra("sob", gson.toJson(sob));
@ -747,6 +749,7 @@ public class HomeFragment extends BaseFragment {
if (dis > 5) {//大于五分钟可以接单
Intent in = new Intent(con, ShangChuangImgActivityBC.class);
in.putExtra("type", 1);
in.putExtra("reportAlct", data.getReportAlct());
in.putExtra("wid", xData.getId() + "");
in.putExtra("sob", gson.toJson(sob));
in.putExtra("keys", true);
@ -758,6 +761,7 @@ public class HomeFragment extends BaseFragment {
} else if (zStatus == 3 && xStatus == 2) {//已卸货未上传卸货回单
Intent in = new Intent(con, ShangChuangImgActivityBC.class);
in.putExtra("type", 2);
in.putExtra("reportAlct", data.getReportAlct());
in.putExtra("wid", xData.getId() + "");
in.putExtra("h_type", 1);
in.putExtra("sob", gson.toJson(sob));

View File

@ -94,6 +94,9 @@ public class HuoYunDelActivity extends BaseAppCompatActivity {
private BasePopupView xp;
private TextView car;
private String cid;
private String selectCarNum = "";
private String currOutInvoice = "0";
@Override
public void msgMethod(Message m) {
@ -189,6 +192,8 @@ public class HuoYunDelActivity extends BaseAppCompatActivity {
int index = Integer.valueOf((String) m.obj);
Log.e("--选择车辆--", clb.getData().get(index).getCarNumber());
car.setText("选择车辆:" + clb.getData().get(index).getCarNumber());
selectCarNum = clb.getData().get(index).getCarNumber();
currOutInvoice = clb.getData().get(index).getOutInvoice();
cid = clb.getData().get(index).getCarId();
break;
@ -316,12 +321,25 @@ public class HuoYunDelActivity extends BaseAppCompatActivity {
//
ImageButton xuanze = v.findViewById(R.id.xuanze);
if (hyd!=null&&hyd.getData()!=null&& !TextUtils.isEmpty(hyd.getData().getCarNumber())){
cid = hyd.getData().getCarId();
car.setText("选择车辆:" + hyd.getData().getCarNumber());
}else if (clb != null && clb.getData().size() == 1) {
if (hyd != null && hyd.getData() != null && !TextUtils.isEmpty(hyd.getData().getCarNumber())) {
String carNumber = hyd.getData().getCarNumber();
if (clb != null && !clb.getData().isEmpty()) {//判断车辆是否需要上传安联
for (CarListBean.DataDTO datum : clb.getData()) {
if (carNumber.equals(datum.getCarNumber())) {
cid = hyd.getData().getCarId();
car.setText("选择车辆:" + hyd.getData().getCarNumber());
currOutInvoice = datum.getOutInvoice();
selectCarNum = hyd.getData().getCarNumber();
break;
}
}
}
} else if (clb != null && clb.getData().size() == 1) {
cid = clb.getData().get(0).getCarId();
car.setText("选择车辆:" + clb.getData().get(0).getCarNumber());
currOutInvoice = clb.getData().get(0).getOutInvoice();
selectCarNum = clb.getData().get(0).getCarNumber();
}
xuanze.setOnClickListener(v1 -> {
if (clb.getData().size() > 0) {
@ -412,7 +430,7 @@ public class HuoYunDelActivity extends BaseAppCompatActivity {
UiAuxiliary.homeRequest("接单");
Intent in = new Intent(con, StartYunDanActivity.class);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
in.putExtra("id", "0");
startActivity(in);
finish();
@ -501,8 +519,13 @@ public class HuoYunDelActivity extends BaseAppCompatActivity {
if (allGranted) {
customDialog = new CustomDialog(con, "正在接单...");
customDialog.show();
//验证安联用户是否通过
ALProcess.verification(con, hd);
if ("0".equals(currOutInvoice)){
//验证安联用户是否通过
ALProcess.verification(con, selectCarNum, hd);
}else{
hyr.getOrderStatus(id);
}
} else {
boolean accessCoarseLocation = deniedList.contains("android.permission.ACCESS_FINE_LOCATION");
boolean contains = deniedList.contains("android.permission.WRITE_EXTERNAL_STORAGE");
@ -522,14 +545,14 @@ public class HuoYunDelActivity extends BaseAppCompatActivity {
customDialog = new CustomDialog(con, "正在接单...");
customDialog.show();
//验证安联用户是否通过
ALProcess.verification(con, hd);
ALProcess.verification(con, selectCarNum, hd);
}
} else {
customDialog = new CustomDialog(con, "正在接单...");
customDialog.show();
//验证安联用户是否通过
ALProcess.verification(con, hd);
ALProcess.verification(con, selectCarNum, hd);
}

View File

@ -388,6 +388,7 @@ public class StartYunDanActivity extends BaseActivity {
if (type == 0) {
Intent in = new Intent(con, ShangChuangImgActivityBC.class);
in.putExtra("type", type);
in.putExtra("reportAlct", sob.getData().getReportAlct());
in.putExtra("wid", wid);
in.putExtra("sob", gson.toJson(sob));
in.putExtra("keys", key);
@ -398,6 +399,7 @@ public class StartYunDanActivity extends BaseActivity {
} else if (sdw.getStatus() == 1) {//装货回单
Intent in = new Intent(con, ShangChuangImgActivityBC.class);
in.putExtra("type", 2);
in.putExtra("reportAlct", sob.getData().getReportAlct());
in.putExtra("wid", wid);
in.putExtra("h_type", type);
in.putExtra("sob", gson.toJson(sob));
@ -405,6 +407,7 @@ public class StartYunDanActivity extends BaseActivity {
} else if (sdw.getStatus() == 2) {//上传收货单(卸货回单)
Intent in = new Intent(con, ShangChuangImgActivityBC.class);
in.putExtra("type", 2);
in.putExtra("reportAlct", sob.getData().getReportAlct());
in.putExtra("wid", wid);
in.putExtra("h_type", type);
in.putExtra("sob", gson.toJson(sob));
@ -424,6 +427,7 @@ public class StartYunDanActivity extends BaseActivity {
if (dis > 5) {//大于五分钟可以接单
Intent in = new Intent(con, ShangChuangImgActivityBC.class);
in.putExtra("type", type);
in.putExtra("reportAlct", sob.getData().getReportAlct());
in.putExtra("wid", wid);
in.putExtra("sob", gson.toJson(sob));
in.putExtra("keys", key);

View File

@ -89,6 +89,7 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
private String[] names = {"装货", "卸货", "回单"};
public static String[] TYPE_NAME = {"zhuanghuo", "xiehuo", "huidan"};
private int index = 0;
private int reportAlct = 1;//是否上报(安联城通) 0否 1是'
//
private Gson gson = new Gson();
//
@ -184,6 +185,13 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
EventBus.getDefault().post(new HomeWaybillEvent());
Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show();
finish();
}else if (reportAlct==0){
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
EventBus.getDefault().post(new HomeWaybillEvent());
Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show();
finish();
}
} else if ((0 == index || 1 == index) && isFinish) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
@ -329,6 +337,7 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
tips_x = findViewById(R.id.tips_x);
Bundle ins = getIntent().getExtras();
index = ins.getInt("type");
reportAlct = ins.getInt("reportAlct");
wid = ins.getString("wid");
h_type = ins.getInt("h_type");
keys = ins.getBoolean("keys");
@ -481,31 +490,37 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
Log.e("--装货信息", gson.toJson(lub));
if (locationKey) {//高德定位
if (keys) {
NewLJUtils.getInstance().getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnGDDownloadResultListener() {
@Override
public void onSuccess(String var1) {
String string = var1;
if (string.equals("30")) {//安联装货单平台未装货
isFinish = true;
//平台确认装货
hyr.loading(lub);
} else {
if (1==reportAlct){
NewLJUtils.getInstance().getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnGDDownloadResultListener() {
@Override
public void onSuccess(String var1) {
String string = var1;
if (string.equals("30")) {//安联装货单平台未装货
isFinish = true;
//平台确认装货
hyr.loading(lub);
} else {
// nfc();
loadInfo();
}
upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber());
loadInfo();
}
upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber());
// NewLJUtils.getInstance().startLocationService(ShangChuangImgActivity.this);
}
@Override
public void onFailure(String var1, String var2) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
ToastUtils.showToast(con, var2);
}
});
@Override
public void onFailure(String var1, String var2) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
ToastUtils.showToast(con, var2);
}
});
}else{
isFinish = true;
//平台确认装货
hyr.loading(lub);
}
// MDPLocationCollectionManager.getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnDownloadResultListener() {
// @Override
// public void onSuccess(Object o) {
@ -561,30 +576,36 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
Log.e("--卸货信息", gson.toJson(lub));
if (locationKey) {
if (keys) {
NewLJUtils.getInstance().getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnGDDownloadResultListener() {
@Override
public void onSuccess(String var1) {
if (var1.equals("40")) {//安联装货单平台未装货
//卸货状态-平台
isFinish = true;
hyr.dischargeCargo(lub);
} else {
nfc();
uploadInfo();
}
upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber());
if (1==reportAlct){
NewLJUtils.getInstance().getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnGDDownloadResultListener() {
@Override
public void onSuccess(String var1) {
if (var1.equals("40")) {//安联装货单平台未装货
//卸货状态-平台
isFinish = true;
hyr.dischargeCargo(lub);
} else {
nfc();
uploadInfo();
}
upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber());
// NewLJUtils.getInstance().stopLocationService();
}
@Override
public void onFailure(String var1, String var2) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
ToastUtils.showToast(con, var2);
}
});
@Override
public void onFailure(String var1, String var2) {
if (!isFinishing() && customDialog != null && customDialog.isShowing()) {
customDialog.dismiss();
}
ToastUtils.showToast(con, var2);
}
});
}else {
//卸货状态-平台
isFinish = true;
hyr.dischargeCargo(lub);
}
// MDPLocationCollectionManager.getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnDownloadResultListener() {
// @Override
@ -643,7 +664,9 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity {
Log.e("--回单信息", gson.toJson(urib));
if (locationKey) {
if (index == 2 && keys) {
up_trafficSign();
if (1==reportAlct){
up_trafficSign();
}
// up_trafficReceipt();
// receipt_image();
}

View File

@ -42,6 +42,8 @@ import com.express.mdp.Callback;
import com.google.gson.Gson;
import java.util.Arrays;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.schedulers.Schedulers;
@ -761,4 +763,48 @@ public class NewLJUtils {
}));
}
/**
* 人车绑定关系
* @param ctx
* @param idCard
* @param listener
*/
public void trucks(Context ctx, String idCard,String carNum, OnGDDownloadResultListener listener){
DataManager.getInstance().trucks(idCard)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver(ctx, new RxHttpCallBack<CommonResponseBean>() {
@Override
public void onSuccess(CommonResponseBean<CommonResponseBean> t) {
super.onSuccess(t);
String[] licensePlateNos = t.getLicensePlateNos();
if (listener!=null){
if (licensePlateNos.length==0){
listener.onFailure(t.getCode(), "该司机暂未绑定任何车辆");
}else{
boolean isHasCar = false;
for (int i = 0; i < licensePlateNos.length; i++) {
if (licensePlateNos[i].equals(carNum)){
isHasCar = true;
break;
}
}
if (isHasCar){
listener.onSuccess("人车绑定正常");
}else{
listener.onFailure(t.getCode(), "司机车辆绑定异常");
}
}
}
}
@Override
public void onCodeError(Context mContext, CommonResponseBean<CommonResponseBean> t) {
super.onCodeError(mContext, t);
if (listener != null)
listener.onFailure(t.getCode(), TextUtils.isEmpty(t.getMessage()) ? "司机异常" : t.getMessage());
}
}));
}
}

View File

@ -21,6 +21,16 @@ public class CommonResponseBean<T> implements Serializable {
private String statusCode;
private boolean success;
private String[] LicensePlateNos;
public String[] getLicensePlateNos() {
return LicensePlateNos;
}
public void setLicensePlateNos(String[] licensePlateNos) {
LicensePlateNos = licensePlateNos;
}
private DriverBean driver;
public DriverBean getDriver() {

View File

@ -0,0 +1,112 @@
package com.dahe.mylibrary.utils;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
/**
* @ClassName PermissionUtils
* @Author john
* @Date 2024/12/19 14:59
* @Description TODO
*/
public class PermissionUtils {
// 私有静态实例防止被外部实例化
private static PermissionUtils instance;
// 私有构造方法防止通过 new 关键字创建实例
private PermissionUtils() {
}
// 获取单例实例
public static PermissionUtils getInstance() {
if (instance == null) {
synchronized (PermissionUtils.class) {
if (instance == null) {
instance = new PermissionUtils();
}
}
}
return instance;
}
/**
* 根据不同手机机型跳转到权限设置页面
*
* @param context 上下文
*/
public void goToAppPermissionSettings(Context context) {
Intent intent = new Intent();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (Build.FINGERPRINT.startsWith("Huawei") || Build.BRAND.startsWith("Huawei")) {
// 华为手机
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", context.getPackageName(), null);
intent.setData(uri);
} else if (Build.FINGERPRINT.startsWith("Xiaomi") || Build.BRAND.startsWith("Xiaomi")) {
// 小米手机
intent.setAction(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
Uri uri = Uri.parse("package:" + context.getPackageName());
intent.setData(uri);
} else if (Build.BRAND.equals("Meizu")) {
// 魅族手机
intent.setAction("com.meizu.safe.security.SHOW_APPSEC");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.putExtra("packageName", context.getPackageName());
} else if (Build.FINGERPRINT.startsWith("OPPO") || Build.BRAND.startsWith("OPPO")) {
// OPPO手机
try {
String pkgName = context.getPackageName();
String className = "com.coloros.safecenter.permission.PermissionManagerActivity";
intent.setClassName("com.coloros.safecenter", className);
intent.putExtra("packageName", pkgName);
intent.putExtra("appName", context.getResources().getString(context.getApplicationInfo().labelRes));
intent.putExtra("opType", "4"); // 4 表示权限管理页面
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
} catch (Exception e) {
// 如果找不到OPPO的特定页面则使用通用页面
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", context.getPackageName(), null);
intent.setData(uri);
}
} else if (Build.FINGERPRINT.startsWith("vivo") || Build.BRAND.startsWith("vivo")) {
// vivo手机
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", context.getPackageName(), null);
intent.setData(uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName());
} else if (Build.BRAND.equals("samsung")) {
// 三星手机
try {
String pkgName = context.getPackageName();
Intent intent2 = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS");
intent2.addCategory(Intent.CATEGORY_DEFAULT);
intent2.setData(Uri.parse("package:" + pkgName));
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent2.putExtra("com.android.providers.media.EXTRA_APP_PACKAGE", pkgName);
context.startActivity(intent2);
return; // 使用三星特定的页面不需要继续执行通用代码
} catch (Exception e) {
// 如果三星特定页面失败则使用通用页面
}
} else {
// 其他手机使用通用页面
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", context.getPackageName(), null);
intent.setData(uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName());
}
} else {
// 低于Android 6.0M的版本使用通用页面
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", context.getPackageName(), null);
intent.setData(uri);
}
context.startActivity(intent);
}
}

View File

@ -307,6 +307,27 @@ public final class TimeUtil {
return format.format(date);
}
/**
* 验证时间字符串是否是yyyy-MM-dd格式
*
* @param dateStr 需要验证的时间字符串
* @return 如果是yyyy-MM-dd格式返回true否则返回false
*/
public static boolean isValidDate(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
sdf.setLenient(false); // 设置不宽容严格解析
try {
Date date = sdf.parse(dateStr);
// 可以进一步验证解析后的日期是否合法例如检查月份天数闰年等
// 但对于简单的格式验证这一步通常不是必需的
return true;
} catch (ParseException e) {
return false;
}
}
/**
* 将Date类型转为时间戳
*