我有两个应用程序,一个在命名空间com.gtosoft.voyager中运行,另一个是com.gtosoft.dash。从com.gtosoft.dash我想启动com.gtosoft.voyager中定义的服务...
我认为我需要一个意图,但是在使用startService()开始之前我会将什么arg(s)传递给意图?
如果他们在同一个包中,我可以使用
Intent svc=new Intent (SettingsActivity.this,VoyagerService.class);
startService(svc);
定义服务的清单摘录
<application android:icon="@drawable/voyagercarlogo" android:label="@string/app_name" android:debuggable="false">
<provider android:name="com.gtosoft.voyager.VoyagerCProvider"
android:authorities="com.gtosoft.voyager"/>
<service android:name=".VoyagerService"/>
<activity android:name=".SettingsActivity"
android:label="Voyager"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 0 :(得分:10)
虽然CommonsWare的回答在2010年4月是正确的,但事情发生了变化,你需要实际setComponent在另一个应用程序中启动服务。例如,
com.xyz.app1中的活动:
Intent i = new Intent();
String pkg = "com.xyz.app2";
String cls = "com.xyz.app2.MyService";
i.setComponent(new ComponentName(pkg, cls));
startService(i);
答案 1 :(得分:4)