Skip to content

Commit 5e9411f

Browse files
committed
优化dialog工具等
1 parent 07c4c71 commit 5e9411f

File tree

9 files changed

+175
-32
lines changed

9 files changed

+175
-32
lines changed

app/src/main/java/com/ichtj/basetools/dialog/DialogAty.java

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.ichtj.basetools.base.BaseActivity;
1414

1515
import java.util.ArrayList;
16+
import java.util.Arrays;
1617
import java.util.List;
1718

1819
public class DialogAty extends BaseActivity {
@@ -23,14 +24,18 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
2324
}
2425

2526
public void normalDialogClick(View view) {
26-
DialogUtils.setDialogCallback(new IDialogCallback() {
27+
DialogUtils.setDialogCallback(new IDialogCallback<String>() {
2728
@Override
2829
public void show() {
2930
KLog.d("show() >> ");
3031
}
3132

3233
@Override
33-
public void onPositiveClick(String content) {
34+
public void onPositiveClick() {
35+
}
36+
37+
@Override
38+
public void callback(String content) {
3439
KLog.d("onPositiveClick() etContent >> " + content);
3540
}
3641

@@ -47,15 +52,20 @@ public void dismiss() {
4752
}
4853

4954
public void editeDialogClick(View view) {
50-
DialogUtils.setDialogCallback(new IDialogCallback() {
55+
DialogUtils.setDialogCallback(new IDialogCallback<String>() {
5156
@Override
5257
public void show() {
5358
KLog.d("show() >> ");
5459
}
5560

5661
@Override
57-
public void onPositiveClick(String content) {
58-
KLog.d("onPositiveClick() etContent >> " + content);
62+
public void onPositiveClick() {
63+
KLog.d ("onPositiveClick() >> ");
64+
}
65+
66+
@Override
67+
public void callback(String content) {
68+
KLog.d("callback >> " + content);
5969
}
6070

6171
@Override
@@ -70,6 +80,35 @@ public void dismiss() {
7080
}).showEdite(this, "ichtj", "这是一个测试dialog");
7181
}
7282

83+
public void moreSelectDialogClick(View view) {
84+
DialogUtils.setDialogCallback(new IDialogCallback<int[]>() {
85+
@Override
86+
public void show() {
87+
KLog.d("show() >> ");
88+
}
89+
90+
@Override
91+
public void onPositiveClick() {
92+
KLog.d ("onPositiveClick() >> ");
93+
}
94+
95+
@Override
96+
public void callback(int[] data) {
97+
KLog.d("callback >> " + Arrays.toString (data ));
98+
}
99+
100+
@Override
101+
public void onNegativeClick() {
102+
KLog.d("onNegativeClick() >> ");
103+
}
104+
105+
@Override
106+
public void dismiss() {
107+
KLog.d("dismiss() >> ");
108+
}
109+
}).showCheckedItem (this, "ichtj", new String[]{"选项一", "选项二", "选项三", "选项四"});
110+
}
111+
73112
public void dismissClick(View view) {
74113
DialogUtils.dismiss();
75114
}

app/src/main/java/com/ichtj/basetools/util/OptionTools.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,13 @@ public class OptionTools {
4949
public static void showOtaUpgrade() {
5050
File file = new File("/sdcard/update.zip");
5151
if (file.exists()) {
52-
DialogUtils.setDialogCallback(new IDialogCallback() {
52+
DialogUtils.setDialogCallback(new IDialogCallback<String>() {
5353
@Override
5454
public void show() {
5555

5656
}
57-
5857
@Override
59-
public void onPositiveClick(String content) {
58+
public void onPositiveClick() {
6059
FUpgradeTools.firmwareUpgrade(new UpgradeBean("/sdcard/update.zip", new IUpgrade() {
6160
@Override
6261
public void installStatus(int installStatus) {
@@ -76,6 +75,11 @@ public void warning(String warning) {
7675
DialogUtils.dismiss();
7776
}
7877

78+
@Override
79+
public void callback(String data) {
80+
81+
}
82+
7983
@Override
8084
public void onNegativeClick() {
8185

app/src/main/res/layout/activity_dialog.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@
3434
android:onClick="editeDialogClick"
3535
android:text="带编辑框对话框"
3636
android:textSize="@dimen/small_text_size" />
37+
<Button
38+
android:id="@+id/btnMoreSelect"
39+
android:layout_width="wrap_content"
40+
android:layout_height="wrap_content"
41+
android:onClick="moreSelectDialogClick"
42+
android:text="多选对话框"
43+
android:textSize="@dimen/small_text_size" />
3744

3845
<Button
3946
android:id="@+id/btnDismiss"

base_iotutils/src/main/java/com/face_chtj/base_iotutils/AppsUtils.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@
2525
import java.io.FileReader;
2626
import java.io.IOException;
2727
import java.security.MessageDigest;
28-
import java.security.NoSuchAlgorithmException;
2928
import java.util.ArrayList;
30-
import java.util.Arrays;
3129
import java.util.Enumeration;
3230
import java.util.zip.ZipEntry;
3331
import java.util.zip.ZipFile;
@@ -96,7 +94,6 @@ public static List<AppEntity> getDeskTopAppList() {
9694
PackageInfo packageInfo = pm.getPackageInfo(pkg, 0);
9795
long firstInstallTime = packageInfo.firstInstallTime;
9896
long lastUpdateTime = packageInfo.lastUpdateTime;
99-
// Drawable icon = info.loadIcon(context.getPackageManager());
10097
ApplicationInfo ai = pm.getApplicationInfo(info.activityInfo.packageName, PackageManager.GET_ACTIVITIES);
10198
CharSequence name = info.activityInfo.loadLabel(context.getPackageManager());
10299
boolean isSys = (ai.flags & ai.FLAG_SYSTEM) != 0;
@@ -493,7 +490,6 @@ public static boolean uninstallSilent(boolean isSys, boolean isReboot, String ap
493490
} catch (Throwable throwable) {
494491
}
495492
}
496-
ShellUtils.CommandResult mount;
497493
if (Build.VERSION.SDK_INT > 25) {
498494
String[] mountCmd=new String[]{
499495
"mount -o rw,remount /dev/block/dm-0",
@@ -503,9 +499,9 @@ public static boolean uninstallSilent(boolean isSys, boolean isReboot, String ap
503499
"mount -o rw,remount /dev/block/dm-4",
504500
"mount -o rw,remount /",
505501
};
506-
mount = ShellUtils.execCommand(mountCmd, true);
502+
ShellUtils.execCommand(mountCmd, true);
507503
} else {
508-
mount = ShellUtils.execCommand("mount -o rw,remount -t ext4 /system", true);
504+
ShellUtils.execCommand("mount -o rw,remount -t ext4 /system", true);
509505
}
510506
String[] cmd = new String[]{
511507
isSys ? (!apkPath.equals("") ? "rm -rf " + apkPath + "*" : "") : "pm uninstall " + packageName,

base_iotutils/src/main/java/com/face_chtj/base_iotutils/BaseIotUtils.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@
66
import com.face_chtj.base_iotutils.callback.IDefaultUrlCallback;
77

88
public final class BaseIotUtils {
9-
private static final String TAG = BaseIotUtils.class.getSimpleName();
10-
//全局上下文
119
static Context sApp;
1210
private IDefaultUrlCallback iDefaultUrlCallback;
1311
private static volatile BaseIotUtils sInstance;
1412

15-
//singleton pattern
1613
public static BaseIotUtils instance() {
1714
if (sInstance == null) {
1815
synchronized (BaseIotUtils.class) {

base_iotutils/src/main/java/com/face_chtj/base_iotutils/DialogUtils.java

Lines changed: 84 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,19 @@
1717
import androidx.core.content.ContextCompat;
1818

1919
import com.face_chtj.base_iotutils.callback.IDialogCallback;
20-
public class DialogUtils {
20+
21+
/**
22+
* 根据照不同的需求,封装不同的dialog
23+
* 根据callback返回限定的结果
24+
* @param <T>
25+
*/
26+
public class DialogUtils<T> {
2127
private static volatile DialogUtils mInstance;
2228
private AlertDialog mDialog;
2329
private TextView tvTitle;
2430
private EditText etContent;
2531
private boolean isShowBoard;
26-
private IDialogCallback iCallback;
32+
private IDialogCallback<?> iCallback;
2733
private boolean isClickBtn;
2834

2935
//单例模式
@@ -38,7 +44,7 @@ private static DialogUtils instance() {
3844
return mInstance;
3945
}
4046

41-
public static DialogUtils setDialogCallback(IDialogCallback iCallback) {
47+
public static <T> DialogUtils<T> setDialogCallback(IDialogCallback<T> iCallback) {
4248
instance().iCallback = iCallback;
4349
return instance();
4450
}
@@ -59,6 +65,79 @@ public static void showEdite(Context context, String title) {
5965
createDialog(context, R.drawable.ic_dialog_tool, "", title, "", true);
6066
}
6167

68+
public static void showCheckedItem(Context context, String title, String[] arrays) {
69+
showCheckedItem (context,title,arrays,true);
70+
}
71+
72+
public static void showCheckedItem(Context context, String title, String[] arrays, boolean returnPositions) {
73+
final boolean[] checkedItems = new boolean[arrays.length];
74+
AlertDialog.Builder builder = new AlertDialog.Builder(context);
75+
builder.setTitle(title);
76+
builder.setMultiChoiceItems(arrays, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
77+
@Override
78+
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
79+
checkedItems[which] = isChecked;
80+
}
81+
});
82+
builder.setPositiveButton(R.string.iot_ok, new DialogInterface.OnClickListener() {
83+
@Override
84+
public void onClick(DialogInterface dialog, int which) {
85+
instance().isClickBtn = true;
86+
if (instance().iCallback != null) {
87+
int count = 0;
88+
for (boolean checked : checkedItems) {
89+
if (checked) count++;
90+
}
91+
if (returnPositions) {
92+
int[] result = new int[count];
93+
int idx = 0;
94+
for (int i = 0; i < checkedItems.length; i++) {
95+
if (checkedItems[i]) {
96+
result[idx++] = i;
97+
}
98+
}
99+
instance().iCallback.callback(result);
100+
} else {
101+
String[] result = new String[count];
102+
int idx = 0;
103+
for (int i = 0; i < checkedItems.length; i++) {
104+
if (checkedItems[i]) {
105+
result[idx++] = arrays[i];
106+
}
107+
}
108+
instance().iCallback.callback(result);
109+
}
110+
instance().iCallback.onPositiveClick();
111+
}
112+
}
113+
});
114+
builder.setNegativeButton(R.string.iot_cancel, new DialogInterface.OnClickListener() {
115+
@Override
116+
public void onClick(DialogInterface dialog, int which) {
117+
instance().isClickBtn = true;
118+
if (instance().iCallback != null) {
119+
instance().iCallback.onNegativeClick();
120+
}
121+
}
122+
});
123+
AlertDialog dialog = builder.create();
124+
dialog.setCanceledOnTouchOutside(false);
125+
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
126+
@Override
127+
public void onDismiss(DialogInterface dialog) {
128+
Log.d("onDismiss", "onDismiss >>>");
129+
reset();
130+
if (!instance().isClickBtn && instance().iCallback != null) {
131+
instance().iCallback.dismiss();
132+
}
133+
}
134+
});
135+
dialog.show();
136+
if (instance().iCallback != null) {
137+
instance().iCallback.show();
138+
}
139+
}
140+
62141

63142
public static void showEdite(Context context, String title, String etContent) {
64143
createDialog(context, R.drawable.ic_dialog_tool, "", title, etContent, true);
@@ -99,7 +178,8 @@ public void onClick(DialogInterface dialog, int which) {
99178
instance().isClickBtn = true;
100179
if (instance().iCallback != null) {
101180
String etContent = instance().etContent != null ? instance().etContent.getText().toString() : "";
102-
instance().iCallback.onPositiveClick(etContent);
181+
instance().iCallback.callback (etContent);
182+
instance().iCallback.onPositiveClick();
103183
}
104184
}
105185
});

base_iotutils/src/main/java/com/face_chtj/base_iotutils/DisplayUtils.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,11 @@
66
import android.graphics.Point;
77
import android.os.Build;
88
import android.provider.Settings;
9-
import android.text.TextUtils;
109
import android.util.DisplayMetrics;
11-
import android.util.Log;
1210
import android.view.Display;
1311
import android.view.Window;
1412
import android.view.WindowManager;
1513

16-
import com.face_chtj.base_iotutils.KLog;
17-
import com.face_chtj.base_iotutils.BaseIotUtils;
18-
1914
import java.io.File;
2015

2116

@@ -30,7 +25,6 @@
3025
* --设置系统屏幕亮度 {@link #setAppScreenBrightness(Activity, int)} )}
3126
*/
3227
public class DisplayUtils {
33-
private static final String TAG = DisplayUtils.class.getSimpleName();
3428
/**
3529
* 获取当前的屏幕尺寸
3630
*
@@ -127,7 +121,7 @@ public static void setAppScreenBrightness(Activity aty,int brightnessValue) {
127121
*/
128122
public static boolean changeRotation(int rotationValue) {
129123
ShellUtils.CommandResult setRotationResult=ShellUtils.execCommand("settings put system user_rotation "+rotationValue,true);
130-
Log.d(TAG, "setRotationResult: result>>"+setRotationResult.result+",succ>>"+setRotationResult.successMsg+",err>>"+setRotationResult.errorMsg);
124+
KLog.d("setRotationResult: result>>"+setRotationResult.result+",succ>>"+setRotationResult.successMsg+",err>>"+setRotationResult.errorMsg);
131125
return setRotationResult.result==0;
132126
}
133127

@@ -138,7 +132,7 @@ public static boolean changeRotation(int rotationValue) {
138132
*/
139133
public static boolean screenshot(String fileName){
140134
ShellUtils.CommandResult result =ShellUtils.execCommand("screencap "+fileName,true);
141-
Log.d(TAG, "screenshot: result>>"+result.result+",err>>"+result.errorMsg+",succ>>"+result.successMsg);
135+
KLog.d("screenshot: result>>"+result.result+",err>>"+result.errorMsg+",succ>>"+result.successMsg);
142136
return result.result==0&&new File(fileName).exists();
143137
}
144138

@@ -152,7 +146,7 @@ public static void setScreenMode(int mode){
152146
try{
153147
Settings.System.putInt(BaseIotUtils.getContext().getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, mode);
154148
}catch (Exception localException){
155-
KLog.d(TAG," errMeg= "+localException.getMessage());
149+
KLog.d("errMeg= "+localException.getMessage());
156150
localException.printStackTrace();
157151
}
158152
}

base_iotutils/src/main/java/com/face_chtj/base_iotutils/ShellUtils.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,31 @@ public class ShellUtils {
3434
public final static String COMMAND_EXIT = "exit\n";
3535
public final static String COMMAND_LINE_END = "\n";
3636

37+
/**
38+
* 查找su路径
39+
* @return
40+
*/
41+
public static String findSuPath() {
42+
String suPath = null;
43+
Process process = null;
44+
try {
45+
process = Runtime.getRuntime().exec(new String[]{"which", "su"});
46+
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
47+
suPath = in.readLine(); // su 的路径
48+
in.close();
49+
process.waitFor();
50+
} catch (Exception e) {
51+
e.printStackTrace();
52+
} finally {
53+
if (process != null) {
54+
process.destroy();
55+
}
56+
}
57+
return suPath;
58+
}
59+
60+
61+
3762
/**
3863
* 检查是否拥有root权限
3964
* 执行shell adb 命令很多需要root权限

0 commit comments

Comments
 (0)