如何在没有类的情况下通过intent启动绑定服务

时间:2014-10-14 15:53:21

标签: android service

我试图通过Intent启动绑定(最终是远程)Android服务。如果我创建Intent并引用Service类(请参阅下面的变量ii),则可以正常工作。如果我使用字符串为类名创建Intent,则bindService会失败。

最终,我的目标是让第二个应用程序访问我的服务,其中不包含Service课程(这是远程服务工作的原理......?不是'是吗?) - 因此希望创建Intent而不引用类对象。

        //this Intent works
        Intent ii = new Intent(this, MyService.class);

        //this Intent doesn't
        Intent i = new Intent();
        i.setClassName("com.ghee", "MyService");

        boolean b = bindService(ii,
                mSvcConn,
                Context.BIND_AUTO_CREATE);

        if(!b) {
            Log.d(TAG, "bindService returned false...");
        }

如果有帮助,这里的大部分清单都是:

<application android:icon="@drawable/icon">
  <activity android:name=".MyActivity" 
              android:label="@string/app_name">
    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <action android:name="com.ghee.MyService" />
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>

  <service android:name=".MyService"
         android:exported="true" 
         android:process=":remote">
  </service>
</application>

1 个答案:

答案 0 :(得分:2)

您需要指定类的完整路径,而不仅仅是其名称。这似乎是违反直觉的,因为你已经在参数1中指定了包,但是......哦。

试试这个:

i.setClassName("com.ghee", "com.ghee.MyService");