2020import com .termux .R ;
2121import com .termux .app .TermuxActivity ;
2222import com .termux .zerocore .activity .EditTextActivity ;
23+ import com .termux .zerocore .activity .WebViewActivity ;
2324import com .termux .zerocore .config .mainmenu .config .BaseMenuClickConfig ;
2425import com .termux .zerocore .config .mainmenu .config .MainMenuClickConfig ;
2526import 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