2014-09-12 242 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