文章目录
需求
在计算器内输入特定字符,跳转到其他应用
解决
路径:/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;
+ }