2014-09-12 126 views
1

如果我从Activity开始我的Service,它将正常运行(通过单击按钮)。但是,如果我从BrodcastReceiver开始它不起作用。我究竟做错了什么? 这里是我的Service代码,BroadcastReceiver从广播接收器启动服务

http://pastebin.com/hDDrhg0B

http://pastebin.com/ey7bnJSw

这里是我的清单文件 http://pastebin.com/fUcM6Qse

+0

请张贴您的主要作品 – sunil 2014-09-12 10:40:39

+0

是否已经在清单中注册了接收者和服务? – Opiatefuchs 2014-09-12 10:43:21

+0

从广播中启动服务时遇到什么问题?你可以看到日志是广播接收机有史以来被称为? – 2014-09-12 10:56:59

回答

1

这是我如何做到这一点,它的工作原理:

public class BadgesReceiver extends BroadcastReceiver { 
    private static final String TAG = "BadgesReceiver"; 

    public static final String BADGES_UPDATE_ACTION = BuildConfig.PACKAGE_NAME + ".action.UPDATE_BADGES"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     final String action = intent != null ? intent.getAction() : null; 
     Log.d(TAG, "onReceive action: " + action); 
     if (!TextUtils.isEmpty(action) && action.equals(BADGES_UPDATE_ACTION)) { 
      final Intent i = new Intent(context, MyService.class); 
      i.setAction(MyService.UPDATE_BADGES_ACTION); 
      context.startService(i); 
     } 
    } 
} 
+0

什么是UPDATE_BADGES_ACTION?编译器说它无法解决它:( – kg2152 2014-09-12 16:37:54

+0

这是行动,它的定义在第三行:public static final String BADGES_UPDATE_ACTION = BuildConfig.PACKAGE_NAME +“.action.UPDATE_BADGES”; – Ciprian 2014-09-12 23:45:37