Skip to content

Commit 2b8dc8d

Browse files
author
hanxinhao
committed
[Phone][ZeroTermux][Bug][Github(/)]:新增XML应用内打开URL
RootCause: / Modify: / update: #hanxinhao000 Known problem: / ApplyTo: All
1 parent 430ce2f commit 2b8dc8d

3 files changed

Lines changed: 42 additions & 23 deletions

File tree

app/src/main/assets/mainmenu/cn/zt_menu_config.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@
9696
icon=""
9797
click="downloadUrl:https://od.ixcmstudio.cn/repository/main.json" />
9898

99+
<item tag="应用内打开URL"
100+
name="应用内URL"
101+
icon=""
102+
activityTitle="百度一下"
103+
click="appWebUrl:https://www.baidu.com" />
104+
99105
</group>
100106
<!--#######################可删除#########################-->
101107

app/src/main/assets/mainmenu/en/zt_menu_config.xml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
<item tag="RedirectURL"
5656
name="RedirectURL"
5757
icon=""
58-
click="jumpUrl:https://www.baidu.com" />
58+
click="jumpUrl:https://www.google.com" />
5959
<item tag="OccupyAPlaceDoNothing"
6060
name="PlaceholderMenu"
6161
icon=""
@@ -93,7 +93,11 @@
9393
name="DownloadStation"
9494
icon=""
9595
click="downloadUrl:https://od.ixcmstudio.cn/repository/main.json" />
96-
96+
<item tag="OpenTheURLWithinTheApp"
97+
name="InAppURL"
98+
icon=""
99+
activityTitle="Google"
100+
click="appWebUrl:https://www.google.com" />
97101
</group>
98102
<!--####################### Can be deleted #########################-->
99103

app/src/main/java/com/termux/zerocore/config/mainmenu/XMLMainMenuConfig.java

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.termux.R;
2121
import com.termux.app.TermuxActivity;
2222
import com.termux.zerocore.activity.EditTextActivity;
23+
import com.termux.zerocore.activity.WebViewActivity;
2324
import com.termux.zerocore.config.mainmenu.config.BaseMenuClickConfig;
2425
import com.termux.zerocore.config.mainmenu.config.MainMenuClickConfig;
2526
import com.termux.zerocore.config.mainmenu.config.OnLineCommandClickConfig;
@@ -50,6 +51,7 @@ public class XMLMainMenuConfig {
5051
private static final String START_WITH_COMMANDS = "commands:";
5152
private static final String START_WITH_SHELL_URL = "shellUrl:";
5253
private static final String START_WITH_DOWNLOAD_URL = "downloadUrl:";
54+
private static final String START_WITH_APP_WEB_URL = "appWebUrl:";
5355
private static ArrayList<MainMenuCategoryData> MAIN_MENU_CATEGORY_DATAS = new ArrayList<>();
5456
private static XMLErrorMessageListener xMLErrorMessageListener;
5557

@@ -81,6 +83,7 @@ private static void initMainMenuCategoryDatas(List<GroupItem> groupItems, Contex
8183
String dialogMessage = menuItem.getDialogMessage();
8284

8385
String listTitle = menuItem.getListTitle();
86+
String activityTitle = menuItem.getActivityTitle();
8487
// 跳转
8588
if (menuItem.clickAction.startsWith(START_WITH_JAVA)) {
8689
String clazz = menuItem.clickAction.replace(START_WITH_JAVA, "").trim();
@@ -204,6 +207,23 @@ private static void initMainMenuCategoryDatas(List<GroupItem> groupItems, Contex
204207
Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT).show();
205208
}
206209
}));
210+
} else if (menuItem.clickAction.startsWith(START_WITH_APP_WEB_URL)) {
211+
String url = menuItem.clickAction.replace(START_WITH_APP_WEB_URL, "").trim();
212+
configs.add(getXmlClickConfig(context, name, icon, (view, context1) -> {
213+
try {
214+
Intent intent2 = new Intent(context, WebViewActivity.class);
215+
if (!TextUtils.isEmpty(activityTitle)) {
216+
intent2.putExtra("title", activityTitle);
217+
} else {
218+
intent2.putExtra("title", "title");
219+
}
220+
intent2.putExtra("content", url);
221+
context.startActivity(intent2);
222+
} catch (Exception e) {
223+
e.printStackTrace();
224+
Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT).show();
225+
}
226+
}));
207227
} else {
208228
configs.add(getXmlClickConfig(context, name, icon, (view, context1) -> {
209229
Toast.makeText(context1, UUtils.getString(R.string.zt_xml_menu), Toast.LENGTH_SHORT).show();
@@ -338,11 +358,13 @@ public static class MenuItem {
338358
private String dialogTitle;
339359
private String dialogMessage;
340360
private String listTitle;
361+
private String activityTitle;
341362

342363
public MenuItem(String name, String clickAction, String icon,
343364
boolean autoRunShell, String packageName,
344365
boolean dialogConfirm, String dialogTitle,
345-
String dialogMessage, String intentData, String listTitle) {
366+
String dialogMessage, String intentData,
367+
String listTitle, String activityTitle) {
346368
this.name = name;
347369
this.clickAction = clickAction;
348370
this.icon = icon;
@@ -353,6 +375,11 @@ public MenuItem(String name, String clickAction, String icon,
353375
this.dialogTitle = dialogTitle;
354376
this.dialogMessage = dialogMessage;
355377
this.listTitle = listTitle;
378+
this.activityTitle = activityTitle;
379+
}
380+
381+
public String getActivityTitle() {
382+
return activityTitle;
356383
}
357384

358385
public String getListTitle() {
@@ -454,6 +481,7 @@ private static List<GroupItem> parseXMLFile(File xmlFile) {
454481
String dialogTitle = itemElement.getAttribute("dialogTitle");
455482
String dialogMessage = itemElement.getAttribute("dialogMessage");
456483
String listTitle = itemElement.getAttribute("listTitle");
484+
String activityTitle = itemElement.getAttribute("activityTitle");
457485

458486
boolean isAutoRunShell = false;
459487
boolean isDialogConfirm = false;
@@ -471,7 +499,7 @@ private static List<GroupItem> parseXMLFile(File xmlFile) {
471499
MenuItem menuItem = new MenuItem(itemName, clickAction, icon,
472500
isAutoRunShell, packageName,
473501
isDialogConfirm, dialogTitle, dialogMessage,
474-
intentData, listTitle);
502+
intentData, listTitle, activityTitle);
475503
groupItem.addItem(menuItem);
476504
}
477505

@@ -512,25 +540,6 @@ public static List<GroupItem> parseXMLFile(String filePath) {
512540
return parseXMLFile(new File(filePath));
513541
}
514542

515-
// 使用示例
516-
public static void main(String[] args) {
517-
// 方法1:使用File对象
518-
File xmlFile = new File("menu_config.xml");
519-
List<GroupItem> groups = parseXMLFile(xmlFile);
520-
521-
// 方法2:使用文件路径字符串
522-
// List<GroupItem> groups = parseXMLFile("menu_config.xml");
523-
524-
// 打印解析结果
525-
for (GroupItem group : groups) {
526-
System.out.println("=== 组: " + group.getGroupName() + " ===");
527-
for (MenuItem item : group.getItems()) {
528-
System.out.println(item);
529-
}
530-
System.out.println();
531-
}
532-
}
533-
534543
public static interface XMLErrorMessageListener{
535544
void Error(String msg);
536545
}

0 commit comments

Comments
 (0)