2014-11-03 126 views
0

如果一个应用程序在Android清单,这意味着我可以在另一个应用程序正确运行的服务的导出的服务?例如,服务在清单文件中看起来像这样。运行ContactsSyncAdapterService从外部Android应用

<service 
      android:name=".account.contactsync.ContactsSyncAdapterService" 
      android:exported="true" 
      android:process=":contacts" > 
      <intent-filter> 
       <action android:name="android.content.SyncAdapter" /> 
      </intent-filter> 

      <meta-data 
       android:name="android.content.SyncAdapter" 
       android:resource="@xml/sync_contacts" /> 
      <meta-data 
       android:name="android.provider.CONTACTS_STRUCTURE" 
       android:resource="@xml/contacts" /> 
     </service> 

正如你可以看到服务被设置为机器人:出口=“真”这意味着我应该能够从应用程序外面跑呢?如何做到这一点

我尝试这样做,也没有工作

final Intent intent = new Intent(); 

        ComponentName cName = new ComponentName 
          ("com.myapp","com.myapp.ContactsSyncAdapterService"); 

        intent.setComponent(cName); 
        startActivity(intent); 

回答

0

你错过了你的组件名称的.account.contactsync

ComponentName cName = new ComponentName("com.myapp", 
    "com.myapp.account.contactsync.ContactsSyncAdapterService"); 

而且你需要使用startService()而不是startActivity() - startActivity()只开始活动。

+0

嗨,谢谢你的回应。但它仍然无法运行同步服务。我想通过从应用以外运行该服务来让应用刷新其联系人。它似乎还没有回应它 – 2014-11-03 23:27:14

+0

我假设你已经阅读[运行同步适配器培训](http://developer.android.com/training/sync-adapters/running-sync-adapter.html)和评估了启动同步适配器的每种方法? – ianhanniballake 2014-11-03 23:31:47

+0

是的,我有。它实际上为这个应用程序[链接](https://github.com/mar-v-in/XMPP-for-Android/blob/master/AndroidManifest.xml)同步适配器 – 2014-11-03 23:38:05