无法找到Cordova Android后台服务

时间:2016-03-29 18:45:05

标签: android cordova ionic-framework

我正在尝试创建一个Cordova插件可以在后台运行的服务。首先,我创建了一个扩展IntentService的服务:

public class BackgroundService extends IntentService {
 @Override
 protected void onHandleIntent(Intent intent) {
    Log.d(LOG_PREFIX, "handling an intent " + intent.toString());
    this.runBackgroundService();
   }
 public static Intent getServiceIntent(Context context){
  Intent intent = new Intent();
  intent.setClass(context, BackgroundService.class);
  return intent;
 }
}

然后在我的plugin.xml文件中,我需要在清单中声明服务:

  <config-file target="AndroidManifest.xml" parent="/manifest/application">
  <service
    android:name="com.myapp.BackgroundService"
    android:exported="false">
  </service>
</config-file>

最后,在插件中,我通过获取Intent并调用startService来激活后台服务:

public class PluginMain extends CordovaPlugin{
   public void initialize(CordovaInterface cordova, CordovaWebView webview){
      super.initialize(cordova, webview);
      Intent backgroundIntent = BackgroundService.getServiceIntent(cordova.getActivity().getApplicationContext());
      cordova.getActivity().startService(backgroundIntent);
}

问题是startService调用失败,说它无法找到BackgroundService类,或者它在清单中未声明。奇怪的是它将一些离子字符串添加到类名的前面:

  

无法找到显式活动类{com.ionicframework.project165251 / com.myapp.BackgroundService};

但是,如果我尝试使用该显式类(使用com.ionicframework.project165251 /前缀),它会拒绝它,说清单文件中的斜杠无效。我不知道该做什么......

0 个答案:

没有答案