"启动"另一个有服务的应用

时间:2014-05-06 15:42:43

标签: android service

我在Eclipse中的2个不同的应用程序项目中有2个不同的应用程序。我将它们称为H和G.到现在为止,我已经能够通过使用

从G启动H.
Intent intent = getPackageManager().getLaunchIntentForPackage("com.xxx.h");
startActivity(intent);

这一直很好用,但实际上,我并不需要启动H应用程序,我只需要在后台运行该应用程序,所以我开始研究服务。所以现在我正在尝试使用

Intent intent = new Intent();
intent.setClassName("com.xxx.h","com.xxx.h.MyService");
startService(intent);

但现在我收到的错误是

  

W / ActivityManager(1044):无法启动服务Intent {cmp = com.xxx.h / .MyService} U = 0:未找到

对服务甚至意图都很陌生,所以我猜这是我想念的简单事情,希望你们可以提供帮助。

修改

我修正了问题,就是说我无法启动服务意图。这是通过包括

来解决的
service android:name=".MyService"

到H.的AndoirdManifest.xml。现在我得到了

  

E / AndroidRuntime(1022):java.lang.IllegalStateException:无法执行活动的方法

编辑2

发现它没有让我在未经许可的情况下启动所以我必须在AndroidManifest.xml中包含android:exported =“true”

2 个答案:

答案 0 :(得分:0)

试试这个:

private void startService(String aServiceName) {

    if (aServiceName.trim().length() > 0) {
        try {
            Context ctx = getApplicationContext();
            Intent iServiceIntent = this.ctx.getPackageManager().getLaunchIntentForPackage(aServiceName);
            ctx.startActivity(iServiceIntent);

            Thread.sleep(800);
        } catch (Exception e) {

        }           
    }
}

答案 1 :(得分:0)

无法启动服务的最初问题是因为我没有将<service>包含在修复该问题的AndroidManifest.xml中,然后无法执行错误是由权限问题引起的。总而言之,解决我的问题所需的全部内容包括

<service 
    android:name=".MyServiceHomework"
    android:exported="true"
/>

到我的H(服务)项目的AndroidManifest.xml