RK Android14 在计算器内输入特定字符跳转到其他应用

文章目录

需求

复制代码
在计算器内输入特定字符,跳转到其他应用

解决

路径:/packages/apps/ExactCalculator/src/com/android/calculator2/Calculator.java

xml 复制代码
diff --git a/packages/apps/ExactCalculator/src/com/android/calculator2/Calculator.java b/packages/apps/ExactCalculator/src/com/android/calculator2/Calculator.java
index 60ce3da..bc5b993 100644 (file)
--- a/packages/apps/ExactCalculator/src/com/android/calculator2/Calculator.java
+++ b/packages/apps/ExactCalculator/src/com/android/calculator2/Calculator.java
@@ -71,6 +71,13 @@ import android.view.animation.AccelerateDecelerateInterpolator;
 import android.widget.HorizontalScrollView;
 import android.widget.TextView;
 import android.widget.Toolbar;
+import android.widget.Toast;
+
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.ComponentName;
+import java.util.List;
+import android.content.Context;
 
 import com.android.calculator2.CalculatorFormula.OnTextSizeChangeListener;
 
@@ -232,6 +239,10 @@ public class Calculator extends Activity
 
         @Override
         public void onTextChanged(CharSequence charSequence, int start, int count, int after) {
+                       if (charSequence.toString().equals("****")) {//特定字符
+                startActivity(getAppOpenIntentByPackageName(Calculator.this, "com.应用的包名"));
+                onClear();
+            }
         }
 
         @Override
@@ -243,6 +254,30 @@ public class Calculator extends Activity
             }
         }
     };
+       
+       public Intent getAppOpenIntentByPackageName(Context context, String packageName) {
+         String mainAct = null;
+         PackageManager pkgMag = context.getPackageManager();
+         Intent intent = new Intent(Intent.ACTION_MAIN);
+         intent.addCategory(Intent.CATEGORY_LAUNCHER);
+         intent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_NEW_TASK);
+
+         List<ResolveInfo> list = pkgMag.queryIntentActivities(intent, PackageManager.GET_ACTIVITIES);
+         for (int i = 0; i < list.size(); i++) {
+             ResolveInfo info = list.get(i);
+             if (info.activityInfo.packageName.equals(packageName)) {
+                 mainAct = info.activityInfo.name;
+                 break;
+             }
+         }
+
+         if (TextUtils.isEmpty(mainAct)) {
+             return null;
+         }
+
+         intent.setComponent(new ComponentName(packageName, mainAct));
+         return intent;
+    }
相关推荐
dancing99928 分钟前
Android Studio中Gradle 7.0上下项目配置及镜像修改
android·ide·android studio
EQ-雪梨蛋花汤2 小时前
【Part 2安卓原生360°VR播放器开发实战】第四节|安卓VR播放器性能优化与设备适配
android·性能优化·vr
每次的天空2 小时前
Android学习总结之kotlin篇(二)
android·学习·kotlin
刘洋浪子2 小时前
Android Studio中Gradle中Task列表显示不全解决方案
android·ide·android studio
橙子199110162 小时前
Kotlin 中 infix 关键字的原理和使用场景
android·开发语言·kotlin
后端码匠9 小时前
MySQL 8.0安装(压缩包方式)
android·mysql·adb
梓仁沐白10 小时前
Android清单文件
android
董可伦12 小时前
Dinky 安装部署并配置提交 Flink Yarn 任务
android·adb·flink
每次的天空13 小时前
Android学习总结之Glide自定义三级缓存(面试篇)
android·学习·glide
恋猫de小郭13 小时前
如何查看项目是否支持最新 Android 16K Page Size 一文汇总
android·开发语言·javascript·kotlin