【问题标题】:Launch third party app from Service从服务启动第三方应用程序
【发布时间】:2015-04-30 15:07:03
【问题描述】:

我需要从服务启动一项活动。我尝试使用:

public void openApplication(String packageName){
      Intent intent = new Intent(packageName);
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      this.startActivity(intent);
    }

但我收到此错误:

E/AndroidRuntime(8563):android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.example.encrypted flg=0x10000000 }
04-30 11:55:07.507: E/AndroidRuntime(8563):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1765)
04-30 11:55:07.507: E/AndroidRuntime(8563):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485)

有什么想法吗?

【问题讨论】:

  • 您正在使用的 Intent 构造函数接受一个操作字符串。它没有包名。显然,您的设备上没有任何活动恰好将其包名称作为操作字符串。您需要使用一个Intent 来标识一个存在的活动。询问第三方应用的开发者他们建议使用什么Intent。

标签: java android android-intent android-activity service


【解决方案1】:

试试这个代码。您需要为该软件包获取启动 Intent:

public void openApplication(String packageName) {
    PackageManager pm = getPackageManager();
    Intent intent = pm.getLaunchIntentForPackage(packageName);
    startActivity(intent);
}

【讨论】:

  • 谢谢!!它完美地工作!我可以给你点什么吗?我是新来的,我对stackoverflow不太了解。但如果可以的话,请告诉我!再次感谢
【解决方案2】:

您创建了一个带有特定“操作”的Intent。找到由所需应用程序的 IntentFilter 处理的正确操作字符串。 packageName 与操作不同。

如果多个应用程序应该在 IntentFilter 中定义相同的操作,系统将弹出一个 IntentChooser,其中显示所有这些应用程序。

【讨论】:

  • 嗨!谢谢你的回答。也许我必须补充一点,我要启动的应用程序是第 3 方应用程序,它不是由我创建的。它会改变什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 2020-09-06
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多