如何唤醒另一个Android应用程序?

时间:2013-12-24 12:29:18

标签: android

我想编写一个监视应用程序,监视另一个应用程序并将其唤醒,如果它不活着的话。

有没有办法唤醒另一个没有特定集成的应用?也许在另一个应用程序上唤醒一些服务?

**醒来后我的意思是其他应用程序开始运行但没有明确显示任何UI。例如,录音机可能会唤醒并在后台工作。它的主要观点不应该显示。

5 个答案:

答案 0 :(得分:0)

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address");
startActivity(LaunchIntent);

答案 1 :(得分:0)

  1. 使用action = MAIN和category = LAUNCHER
  2. 创建一个intent
  3. 使用context.getPackageManager
  4. 从当前上下文中获取PackageManager
  5. packageManager.queryIntentActivity(< intent >,0)其中intent具有category = LAUNCHER,action = MAIN或packageManager.resolveActivity(< intent >, 0)使用main / launcher获取第一个活动
  6. 获取您感兴趣的ActivityInfo
  7. 从ActivityInfo获取packageName和name
  8. 最后,使用category = LAUNCHER,action = MAIN,componentName = new ComponentName(packageName,name)和setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)创建另一个intent
  9. 最后,context.startActivity(newIntent)
  10. 或者您可以使用:

    Intent intent = new Intent("android.intent.action.MAIN");
    intent.setComponent(ComponentName.unflattenFromString("com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks"));
    intent.addCategory("android.intent.category.LAUNCHER");
    startActivity(intent);
    

答案 2 :(得分:0)

这样可以试一试

PackageManager pm = getActivity().getPackageManager();
    Intent intent = pm.getLaunchIntentForPackage("package_name");//for e.g.(com.android.sms)//but this app must be in your device

startActivity(intent);

答案 3 :(得分:0)

如果你想跟踪一个在后台运行而没有用户干扰的应用程序(在这种情况下我假设它在后台使用服务),我们可以通过以下代码跟踪它。

private boolean isOurServiceRunning(Context context) {
            ActivityManager manager = (ActivityManager) context
                    .getSystemService(Context.ACTIVITY_SERVICE);

            List<ActivityManager.RunningServiceInfo> listinfo = manager
                    .getRunningServices(Integer.MAX_VALUE);

            Iterator<ActivityManager.RunningServiceInfo> iterator = listinfo
                    .iterator();

            while (iterator.hasNext()) {

                ActivityManager.RunningServiceInfo info = iterator.next();


                if (info.service
                        .getClassName()
                        .equals("<your service with fullpackage name>"))

                    return true;

            }
            return false;

        }

答案 4 :(得分:0)

从代码中撤销另一个应用程序就足够了。

 Intent intent;
            PackageManager manager = getPackageManager();
            try {
                intent = manager.getLaunchIntentForPackage("com.mycompany.myapp");
                if (intent == null)
                    throw new PackageManager.NameNotFoundException();
                intent.addCategory(Intent.CATEGORY_LAUNCHER);
                startActivity(intent);
            }