From fc4c8ccc838b61e008a4a83be4b26b05dc3603d0 Mon Sep 17 00:00:00 2001 From: huangcm <null@gmail.com> Date: Sat, 24 Aug 2024 09:06:35 +0000 Subject: [PATCH] feat(test): add factory test app --- android/frameworks/base/services/core/java/com/android/server/policy/TvWindowManager.java | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 114 insertions(+), 0 deletions(-) diff --git a/android/frameworks/base/services/core/java/com/android/server/policy/TvWindowManager.java b/android/frameworks/base/services/core/java/com/android/server/policy/TvWindowManager.java index cf01527..c2b287e 100644 --- a/android/frameworks/base/services/core/java/com/android/server/policy/TvWindowManager.java +++ b/android/frameworks/base/services/core/java/com/android/server/policy/TvWindowManager.java @@ -129,6 +129,7 @@ import java.io.File; import java.io.FileReader; +import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.HashSet; @@ -240,6 +241,53 @@ } }; */ + + + private static final String ROOT_PROPERTY = "persist.vendor.root.enabled"; + private static final String ADB_PROPERTY = "persist.vendor.adb.enabled"; + + private void switchRoot() { + boolean enabled = SystemProperties.getBoolean(ROOT_PROPERTY, false); + if (enabled) { + SystemProperties.set(ROOT_PROPERTY, "0"); + mHandler.post(new Runnable() { + @Override + public void run() { + Toast.makeText(mContext, "Root disabled!", Toast.LENGTH_SHORT).show(); + } + }); + } else { + SystemProperties.set(ROOT_PROPERTY, "1"); + mHandler.post(new Runnable() { + @Override + public void run() { + Toast.makeText(mContext, "Root enabled!", Toast.LENGTH_SHORT).show(); + } + }); + } + } + + private void switchAdb() { + boolean enabled = SystemProperties.getBoolean(ADB_PROPERTY, false); + if (enabled) { + SystemProperties.set(ADB_PROPERTY, "0"); + mHandler.post(new Runnable() { + @Override + public void run() { + Toast.makeText(mContext, "ADB disabled!", Toast.LENGTH_SHORT).show(); + } + }); + } else { + SystemProperties.set(ADB_PROPERTY, "1"); + mHandler.post(new Runnable() { + @Override + public void run() { + Toast.makeText(mContext, "ADB enabled!", Toast.LENGTH_SHORT).show(); + } + }); + } + } + /** {@inheritDoc} */ @Override public void init(Context context, IWindowManager windowManager, @@ -263,6 +311,7 @@ */ } + private String pwd = ""; @Override public void onSystemUiStarted() { super.onSystemUiStarted(); @@ -282,6 +331,26 @@ if(down && keyCode != KeyEvent.KEYCODE_POWER && keyCode != KeyEvent.KEYCODE_UNKNOWN){ startFlicker(); + } + + if (down) { + pwd += String.valueOf(keyCode); + if (pwd.contains("1412151298")) { // factory test(password 758521) + startApp("com.oranth.factory", "com.oranth.factory.MainActivity"); + pwd = ""; + } else if (pwd.contains("1412151299")) { // root switch(password 758522) + switchRoot(); + pwd = ""; + } else if (pwd.contains("14121512910")) { // adb switch(password 758523) + switchAdb(); + pwd = ""; + } + + if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT || keyCode == KeyEvent.KEYCODE_DPAD_LEFT || + keyCode == KeyEvent.KEYCODE_DPAD_CENTER || keyCode == KeyEvent.KEYCODE_DPAD_DOWN || + keyCode == KeyEvent.KEYCODE_DPAD_UP) { + pwd = ""; + } } if (keyCode == KeyEvent.KEYCODE_MOUSE) { @@ -433,6 +502,51 @@ mFocusedTvWindow = newFocus; } + private int startApp(String propertyPkg, Bundle bundle) { + Intent launchIntent; + PackageManager packageManager = mContext.getPackageManager(); + String packageName = SystemProperties.get(propertyPkg); + + if ((packageName == null) || (packageName.length() == 0)) { + Log.e(TAG, "[startApp] propertyPkg: " + propertyPkg + " is empty!"); + return -1; + } + + launchIntent = packageManager.getLaunchIntentForPackage(packageName); + if (launchIntent == null) { + launchIntent = packageManager.getLeanbackLaunchIntentForPackage(packageName); + if (launchIntent == null) { + Log.e(TAG, "[startApp] can not get intent for package: " + packageName); + return -1; + } + } + if (bundle != null) + launchIntent.putExtras(bundle); + + mContext.startActivity(launchIntent); + return 0; + } + + private int startApp(String propertyPkg) { + Bundle bundle = null; + return startApp(propertyPkg, bundle); + } + + private int startApp(String propertyPkg, String propertyCls, Bundle bundle) { + + Intent intent = new Intent(); + intent.setComponent(new ComponentName(propertyPkg, propertyCls)); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + if (bundle != null) + intent.putExtras(bundle); + mContext.startActivity(intent); + return 0; + } + + private int startApp(String propertyPkg, String propertyCls) { + return startApp(propertyPkg, propertyCls, null); + } + @Override public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) { int keyCode = event.getKeyCode(); -- Gitblit v1.6.2