新增烽火盒子stb协议
Showing
21 changed files
with
357 additions
and
15 deletions
... | @@ -4,6 +4,14 @@ | ... | @@ -4,6 +4,14 @@ |
4 | <selectionStates> | 4 | <selectionStates> |
5 | <SelectionState runConfigName="app"> | 5 | <SelectionState runConfigName="app"> |
6 | <option name="selectionMode" value="DROPDOWN" /> | 6 | <option name="selectionMode" value="DROPDOWN" /> |
7 | <DropdownSelection timestamp="2024-10-12T05:40:06.328823Z"> | ||
8 | <Target type="DEFAULT_BOOT"> | ||
9 | <handle> | ||
10 | <DeviceId pluginId="Default" identifier="serial=0123456789;connection=725ee2fc" /> | ||
11 | </handle> | ||
12 | </Target> | ||
13 | </DropdownSelection> | ||
14 | <DialogSelection /> | ||
7 | </SelectionState> | 15 | </SelectionState> |
8 | </selectionStates> | 16 | </selectionStates> |
9 | </component> | 17 | </component> | ... | ... |
... | @@ -8,7 +8,7 @@ android { | ... | @@ -8,7 +8,7 @@ android { |
8 | 8 | ||
9 | defaultConfig { | 9 | defaultConfig { |
10 | applicationId "com.topdraw.iptvlaunchertest" | 10 | applicationId "com.topdraw.iptvlaunchertest" |
11 | minSdk 21 | 11 | minSdk 19 |
12 | targetSdk 34 | 12 | targetSdk 34 |
13 | versionCode 1 | 13 | versionCode 1 |
14 | versionName "1.0" | 14 | versionName "1.0" |
... | @@ -30,6 +30,7 @@ android { | ... | @@ -30,6 +30,7 @@ android { |
30 | buildFeatures{ | 30 | buildFeatures{ |
31 | buildConfig true | 31 | buildConfig true |
32 | } | 32 | } |
33 | |||
33 | flavorDimensions 'APP' | 34 | flavorDimensions 'APP' |
34 | productFlavors{ | 35 | productFlavors{ |
35 | chongqing{ | 36 | chongqing{ | ... | ... |
... | @@ -4,7 +4,9 @@ | ... | @@ -4,7 +4,9 @@ |
4 | 4 | ||
5 | <uses-permission android:name="android.permission.INSTALL_PACKAGES"/> | 5 | <uses-permission android:name="android.permission.INSTALL_PACKAGES"/> |
6 | <uses-permission android:name="android.permission.DELETE_PACKAGES"/> | 6 | <uses-permission android:name="android.permission.DELETE_PACKAGES"/> |
7 | <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" /> | ||
7 | <uses-permission android:name="android.permission.INTERNET"/> | 8 | <uses-permission android:name="android.permission.INTERNET"/> |
9 | <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> | ||
8 | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> | 10 | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> |
9 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> | 11 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> |
10 | 12 | ... | ... |
1 | package com.topdraw.iptvlaunchertest; | 1 | package com.topdraw.iptvlaunchertest; |
2 | 2 | ||
3 | import android.Manifest; | 3 | import android.Manifest; |
4 | import android.content.pm.PermissionInfo; | ||
5 | import android.os.Build; | 4 | import android.os.Build; |
6 | import android.os.Bundle; | 5 | import android.os.Bundle; |
7 | import android.webkit.WebSettings; | 6 | import android.webkit.WebSettings; |
... | @@ -13,11 +12,9 @@ import androidx.core.graphics.Insets; | ... | @@ -13,11 +12,9 @@ import androidx.core.graphics.Insets; |
13 | import androidx.core.view.ViewCompat; | 12 | import androidx.core.view.ViewCompat; |
14 | import androidx.core.view.WindowInsetsCompat; | 13 | import androidx.core.view.WindowInsetsCompat; |
15 | 14 | ||
16 | import java.security.acl.Permission; | ||
17 | |||
18 | public class MainActivity extends AppCompatActivity { | 15 | public class MainActivity extends AppCompatActivity { |
19 | private WebView webView; | 16 | private WebView webView; |
20 | private STBAppManager stbAppManager; | 17 | |
21 | private String[] permissions = new String[]{ | 18 | private String[] permissions = new String[]{ |
22 | Manifest.permission.WRITE_EXTERNAL_STORAGE, | 19 | Manifest.permission.WRITE_EXTERNAL_STORAGE, |
23 | Manifest.permission.READ_EXTERNAL_STORAGE, | 20 | Manifest.permission.READ_EXTERNAL_STORAGE, |
... | @@ -52,8 +49,12 @@ public class MainActivity extends AppCompatActivity { | ... | @@ -52,8 +49,12 @@ public class MainActivity extends AppCompatActivity { |
52 | settings.setAllowUniversalAccessFromFileURLs(true); | 49 | settings.setAllowUniversalAccessFromFileURLs(true); |
53 | } | 50 | } |
54 | 51 | ||
52 | //注册接口 | ||
55 | private void initObject(){ | 53 | private void initObject(){ |
56 | this.stbAppManager = new STBAppManager(this); | 54 | if(TestConfig.testDist==TestConfig.Skyworth){ |
57 | webView.addJavascriptInterface(this.stbAppManager,"STBAppManager"); | 55 | webView.addJavascriptInterface(new com.topdraw.iptvlaunchertest.sky.STBAppManager(this),"STBAppManager"); |
56 | }else if(TestConfig.testDist==TestConfig.FiberHome){ | ||
57 | webView.addJavascriptInterface(new com.topdraw.iptvlaunchertest.fh.STBAppManager(this),"STBAppManager"); | ||
58 | } | ||
58 | } | 59 | } |
59 | } | 60 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | package com.topdraw.iptvlaunchertest.fh; | ||
2 | |||
3 | import android.content.Context; | ||
4 | import android.content.pm.PackageInfo; | ||
5 | import android.text.TextUtils; | ||
6 | import android.util.Log; | ||
7 | |||
8 | public class FHActivityUtil { | ||
9 | public static String parseAppFile(Context context, String appName) { | ||
10 | String pkgName = null; | ||
11 | Log.d("FHActivityUtil", "parseAppFile appName = " + appName); | ||
12 | if((TextUtils.isEmpty(appName)) || context == null) { | ||
13 | return null; | ||
14 | } | ||
15 | |||
16 | try { | ||
17 | PackageInfo pkgInfo = context.getPackageManager().getPackageArchiveInfo(appName, 0); | ||
18 | if(pkgInfo != null) { | ||
19 | pkgName = pkgInfo.packageName; | ||
20 | } | ||
21 | |||
22 | Log.d("FHActivityUtil", "parseAppFile pkgName = " + pkgName); | ||
23 | } | ||
24 | catch(Exception e) { | ||
25 | e.printStackTrace(); | ||
26 | } | ||
27 | |||
28 | return pkgName; | ||
29 | } | ||
30 | } |
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
1 | package com.topdraw.iptvlaunchertest.fh; | ||
2 | |||
3 | import android.os.Bundle; | ||
4 | import android.text.TextUtils; | ||
5 | import android.util.Log; | ||
6 | |||
7 | import org.json.JSONArray; | ||
8 | import org.json.JSONObject; | ||
9 | |||
10 | import java.util.HashMap; | ||
11 | import java.util.Iterator; | ||
12 | import java.util.Map; | ||
13 | |||
14 | /** | ||
15 | * 烽火盒子启动参数解析工具 | ||
16 | */ | ||
17 | public class FHJsonUtil { | ||
18 | private static final String TAG = "FHJsonUtil"; | ||
19 | |||
20 | public static JSONArray getArray(String str) { | ||
21 | JSONArray jSONArray = null; | ||
22 | if (TextUtils.isEmpty(str)) { | ||
23 | Log.d(TAG, "getArray arrStr is null."); | ||
24 | jSONArray = null; | ||
25 | } else { | ||
26 | try { | ||
27 | jSONArray = new JSONArray(str); | ||
28 | } catch (Exception e) { | ||
29 | } | ||
30 | } | ||
31 | return jSONArray; | ||
32 | } | ||
33 | |||
34 | public static JSONArray getArrayParam(JSONObject jSONObject, String str) { | ||
35 | JSONArray jSONArray = null; | ||
36 | if (jSONObject == null || TextUtils.isEmpty(str)) { | ||
37 | Log.d(TAG, "getArrayParam jsonObj/name is null."); | ||
38 | jSONArray = null; | ||
39 | } else { | ||
40 | try { | ||
41 | jSONArray = jSONObject.getJSONArray(str); | ||
42 | } catch (Exception e) { | ||
43 | } | ||
44 | } | ||
45 | return jSONArray; | ||
46 | } | ||
47 | |||
48 | public static int getIntParam(JSONObject jSONObject, String str) { | ||
49 | int i = -1; | ||
50 | if (jSONObject == null || TextUtils.isEmpty(str)) { | ||
51 | Log.d(TAG, "getIntParam jsonObj/name is null."); | ||
52 | i = -1; | ||
53 | } else { | ||
54 | try { | ||
55 | i = jSONObject.getInt(str); | ||
56 | } catch (Exception e) { | ||
57 | } | ||
58 | Log.d(TAG, "getIntParam name = " + str + ", value = " + i); | ||
59 | } | ||
60 | return i; | ||
61 | } | ||
62 | |||
63 | public static int getIntParamFromString(String str, String str2) { | ||
64 | int i = -1; | ||
65 | if (TextUtils.isEmpty(str2)) { | ||
66 | Log.d(TAG, "getIntParamFromString name is null."); | ||
67 | i = -1; | ||
68 | } else { | ||
69 | JSONObject jsonObj = getJsonObj(str); | ||
70 | if (jsonObj == null) { | ||
71 | Log.d(TAG, "getIntParamFromString jsonObj null."); | ||
72 | i = -1; | ||
73 | } else { | ||
74 | try { | ||
75 | i = jsonObj.getInt(str2); | ||
76 | } catch (Exception e) { | ||
77 | } | ||
78 | Log.d(TAG, "getIntParamFromString name = " + str2 + ", value = " + i); | ||
79 | } | ||
80 | } | ||
81 | return i; | ||
82 | } | ||
83 | |||
84 | public static JSONObject getJsonObj(String str) { | ||
85 | JSONObject jSONObject; | ||
86 | if (TextUtils.isEmpty(str)) { | ||
87 | Log.d(TAG, "getJsonObj jsonStr is null."); | ||
88 | jSONObject = null; | ||
89 | } else { | ||
90 | try { | ||
91 | jSONObject = new JSONObject(str); | ||
92 | } catch (Exception e) { | ||
93 | jSONObject = null; | ||
94 | } | ||
95 | } | ||
96 | return jSONObject; | ||
97 | } | ||
98 | |||
99 | public static JSONObject getJsonObjFromArray(JSONArray jSONArray, int i) { | ||
100 | JSONObject jSONObject = null; | ||
101 | if (jSONArray == null) { | ||
102 | Log.d(TAG, "getJsonObjFromArray jsonArray is null."); | ||
103 | jSONObject = null; | ||
104 | } else { | ||
105 | try { | ||
106 | jSONObject = jSONArray.getJSONObject(i); | ||
107 | } catch (Exception e) { | ||
108 | } | ||
109 | } | ||
110 | return jSONObject; | ||
111 | } | ||
112 | |||
113 | public static JSONObject getJsonObjFromString(String str, int i) { | ||
114 | JSONObject jSONObject = null; | ||
115 | if (TextUtils.isEmpty(str)) { | ||
116 | Log.d(TAG, "getJsonObjFromString jsonStr is null."); | ||
117 | jSONObject = null; | ||
118 | } else { | ||
119 | try { | ||
120 | jSONObject = new JSONArray(str).getJSONObject(i); | ||
121 | } catch (Exception e) { | ||
122 | } | ||
123 | } | ||
124 | return jSONObject; | ||
125 | } | ||
126 | |||
127 | public static String getStrParam(JSONObject jSONObject, String str) { | ||
128 | String str2; | ||
129 | if (jSONObject == null || TextUtils.isEmpty(str)) { | ||
130 | Log.d(TAG, "getStrParam jsonObj/name is null."); | ||
131 | str2 = ""; | ||
132 | } else { | ||
133 | str2 = ""; | ||
134 | try { | ||
135 | if (jSONObject.has(str)) { | ||
136 | str2 = jSONObject.getString(str); | ||
137 | } | ||
138 | } catch (Exception e) { | ||
139 | str2 = ""; | ||
140 | } | ||
141 | Log.d(TAG, "getStrParam value = " + str2); | ||
142 | } | ||
143 | return str2; | ||
144 | } | ||
145 | |||
146 | public static String getStrParamFromString(String str, String str2) { | ||
147 | String str3; | ||
148 | if (TextUtils.isEmpty(str2)) { | ||
149 | Log.d(TAG, "getStrParamFromString name is null."); | ||
150 | str3 = ""; | ||
151 | } else { | ||
152 | JSONObject jsonObj = getJsonObj(str); | ||
153 | if (jsonObj == null) { | ||
154 | Log.d(TAG, "getStrParamFromString jsonObj is null."); | ||
155 | str3 = ""; | ||
156 | } else { | ||
157 | str3 = ""; | ||
158 | try { | ||
159 | if (jsonObj.has(str2)) { | ||
160 | str3 = jsonObj.getString(str2); | ||
161 | } | ||
162 | } catch (Exception e) { | ||
163 | str3 = ""; | ||
164 | } | ||
165 | Log.d(TAG, "getStrParamFromString value = " + str3); | ||
166 | } | ||
167 | } | ||
168 | return str3; | ||
169 | } | ||
170 | |||
171 | public static Bundle jsonStringToBundle(String str) { | ||
172 | Bundle bundle = new Bundle(); | ||
173 | if (TextUtils.isEmpty(str)) { | ||
174 | Log.d(TAG, "jsonStringToBundle jsonStr is null."); | ||
175 | } else { | ||
176 | try { | ||
177 | JSONObject jSONObject = new JSONObject(str); | ||
178 | Iterator<String> keys = jSONObject.keys(); | ||
179 | while (keys.hasNext()) { | ||
180 | String next = keys.next(); | ||
181 | Object obj = jSONObject.get(next); | ||
182 | if (obj instanceof Integer) { | ||
183 | bundle.putInt(next, ((Integer) obj).intValue()); | ||
184 | } else if (obj instanceof Long) { | ||
185 | bundle.putLong(next, ((Long) obj).longValue()); | ||
186 | } else if (obj instanceof Double) { | ||
187 | bundle.putDouble(next, ((Double) obj).doubleValue()); | ||
188 | } else if (obj instanceof String) { | ||
189 | bundle.putString(next, (String) obj); | ||
190 | } | ||
191 | } | ||
192 | } catch (Exception e) { | ||
193 | e.printStackTrace(); | ||
194 | } | ||
195 | } | ||
196 | return bundle; | ||
197 | } | ||
198 | |||
199 | public static Map jsonToMap(String str) { | ||
200 | HashMap hashMap = new HashMap(); | ||
201 | if (TextUtils.isEmpty(str)) { | ||
202 | Log.d(TAG, "jsonToMap jsonString is null."); | ||
203 | } else { | ||
204 | try { | ||
205 | JSONObject jSONObject = new JSONObject(str); | ||
206 | Iterator<String> keys = jSONObject.keys(); | ||
207 | while (keys.hasNext()) { | ||
208 | String next = keys.next(); | ||
209 | if (!TextUtils.isEmpty(next)) { | ||
210 | hashMap.put(next, jSONObject.getString(next)); | ||
211 | } | ||
212 | } | ||
213 | } catch (Exception e) { | ||
214 | } | ||
215 | } | ||
216 | return hashMap; | ||
217 | } | ||
218 | |||
219 | public static void putStrParam(JSONObject jSONObject, String str, String str2) { | ||
220 | if (jSONObject == null || TextUtils.isEmpty(str)) { | ||
221 | Log.d(TAG, "putStrParam jsonObj/name is null."); | ||
222 | return; | ||
223 | } | ||
224 | try { | ||
225 | jSONObject.put(str, str2); | ||
226 | } catch (Exception e) { | ||
227 | } | ||
228 | } | ||
229 | } |
This diff is collapsed.
Click to expand it.
1 | package com.topdraw.iptvlaunchertest.fh; | ||
2 | |||
3 | public class Util { | ||
4 | public static String byte2Hex(byte[] bArr) { | ||
5 | String str; | ||
6 | String str2 = ""; | ||
7 | if (bArr == null || bArr.length == 0) { | ||
8 | str = null; | ||
9 | } else { | ||
10 | for (int i = 0; i < bArr.length; i++) { | ||
11 | String hexString = Integer.toHexString(bArr[i] & 255); | ||
12 | String str3 = hexString.length() == 1 ? str2 + "0" + hexString : str2 + hexString; | ||
13 | str2 = str3; | ||
14 | if (i < bArr.length - 1) { | ||
15 | str2 = str3 + ""; | ||
16 | } | ||
17 | } | ||
18 | str = str2.toUpperCase(); | ||
19 | } | ||
20 | return str; | ||
21 | } | ||
22 | |||
23 | public static String strLeftPad(String str, int i, char c) { | ||
24 | String str2; | ||
25 | if (str == null) { | ||
26 | str2 = null; | ||
27 | } else { | ||
28 | int length = i - str.length(); | ||
29 | str2 = str; | ||
30 | if (length > 0) { | ||
31 | char[] cArr = new char[length]; | ||
32 | for (int i2 = 0; i2 < cArr.length; i2++) { | ||
33 | cArr[i2] = c; | ||
34 | } | ||
35 | str2 = new String(cArr).concat(str); | ||
36 | } | ||
37 | } | ||
38 | return str2; | ||
39 | } | ||
40 | } |
1 | package com.topdraw.iptvlaunchertest; | 1 | package com.topdraw.iptvlaunchertest.sky; |
2 | 2 | ||
3 | import android.content.Context; | 3 | import android.content.Context; |
4 | import android.content.pm.PackageInfo; | 4 | import android.content.pm.PackageInfo; |
5 | import android.content.pm.PackageManager; | 5 | import android.content.pm.PackageManager; |
6 | import android.os.Build; | 6 | import android.os.Build; |
7 | import android.util.Log; | 7 | import android.util.Log; |
8 | |||
9 | import com.topdraw.iptvlaunchertest.App; | ||
10 | import com.topdraw.iptvlaunchertest.BuildConfig; | ||
11 | |||
8 | import java.io.BufferedReader; | 12 | import java.io.BufferedReader; |
9 | import java.io.IOException; | 13 | import java.io.IOException; |
10 | import java.io.InputStream; | 14 | import java.io.InputStream; | ... | ... |
1 | package com.topdraw.iptvlaunchertest; | 1 | package com.topdraw.iptvlaunchertest.sky; |
2 | 2 | ||
3 | import android.annotation.TargetApi; | 3 | import android.annotation.TargetApi; |
4 | import android.app.PendingIntent; | 4 | import android.app.PendingIntent; |
5 | import android.content.Intent; | 5 | import android.content.Intent; |
6 | import android.content.pm.PackageInstaller; | 6 | import android.content.pm.PackageInstaller; |
7 | |||
8 | import com.topdraw.iptvlaunchertest.App; | ||
9 | |||
7 | import java.io.File; | 10 | import java.io.File; |
8 | import java.io.FileInputStream; | 11 | import java.io.FileInputStream; |
9 | import java.io.IOException; | 12 | import java.io.IOException; | ... | ... |
... | @@ -3,7 +3,7 @@ agp = "8.6.1" | ... | @@ -3,7 +3,7 @@ agp = "8.6.1" |
3 | junit = "4.13.2" | 3 | junit = "4.13.2" |
4 | junitVersion = "1.2.1" | 4 | junitVersion = "1.2.1" |
5 | espressoCore = "3.6.1" | 5 | espressoCore = "3.6.1" |
6 | appcompat = "1.7.0" | 6 | appcompat = "1.2.0" |
7 | material = "1.12.0" | 7 | material = "1.12.0" |
8 | activity = "1.9.1" | 8 | activity = "1.9.1" |
9 | constraintlayout = "2.1.4" | 9 | constraintlayout = "2.1.4" | ... | ... |
-
Please register or sign in to post a comment