2015-12-31 16 views
5

Tôi thêm dịch vụ nền của tôi chạy hoàn hảo nhưng điện thoại của tôi tắt và bật sau đó lớp học của tôi trong nhận được hành động android.intent.action.BOOT_COMPLETED.but dịch vụ không start.my code dưới đây xin vui lòng giúp tôi !!!Tại sao dịch vụ không bắt đầu sau BOOT_COMPLETED?

public class ReceiverCall extends BroadcastReceiver { 
    static final String ACTION = "android.intent.action.BOOT_COMPLETED"; 
    static final String ACTION1 = "android.intent.action.QUICKBOOT_POWERON"; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.v("log_tag", "Action :: "+intent.getAction()); 
     if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { 
       /* Setting the alarm here */ 
       Intent alarmIntent = new Intent(context, MyAlarmService.class); 
       PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0); 
       AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
       Calendar calendar = Calendar.getInstance(); 
       calendar.setTimeInMillis(System.currentTimeMillis()); 
       manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), + (1000 * 60 * 2), pendingIntent); 
       Log.v("log_tag", "REPEAT"); 
      } 
    } 

Và tôi cũng thêm quyền trong biểu thức.

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="com.employeemanager.app.permission.C2D_MESSAGE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.BROADCAST_STICKY" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.GET_TASKS" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

    <application 
     android:allowBackup="true" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="***8" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.NoTitleBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <service 
      android:name="***.MyAlarmService" 
      android:enabled="true" > 
     </service> 

     <receiver android:name="***.ReceiverCall" 
      android:enabled="true" > 
      <intent-filter> 
       <action android:name="***" /> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
       <action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" /> 
       <category android:name="android.intent.category.LAUNCHER" > 
       </category> 
      </intent-filter> 
     </receiver> 
    </application> 
+0

Ứng dụng của bạn có trên thẻ SD không? Ngoài ra khi bạn đặt người nhận và dịch vụ trên bản kê khai của bạn, hãy thử đặt gói đầy đủ như: com.your.package.ReceiverCall và cho tôi biết nếu nó hoạt động –

+0

Skizo tôi cũng thêm tên gói đầy đủ nhưng không có gì hoạt động. – crickpatel0024

+0

Xem câu trả lời của tôi xin vui lòng –

Trả lời

3

Có lẽ bạn misstyped nhưng nếu bạn muốn chắc rằng Intent công việc bạn nên gọi:

context.startService(alarmIntent); 

Và cho tôi biết nếu log này Log.v("log_tag", "Action :: "+intent.getAction()); được hiển thị trên Logcat của bạn xin vui lòng này một Log.v("log_tag", "REPEAT"); quá.

tôi sẽ đề nghị rằng BroadcastReceiver của bạn sẽ như thế này:

public class ReceiverCall extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    Log.v("log_tag", "Action :: "+intent.getAction()); 
    if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { 
      //make an intent to your Service as follows 
      Intent serviceIntent = new Intent(context, MyAlarmService.class); 
      context.startService(serviceIntent); 
     } 
} 

Sau đó, trên bạn Service trong bạn onCreate của Service bạn thêm này:

/* Setting the alarm here */ 
Intent alarmIntent = new Intent(context, Whatever.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0); 
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(System.currentTimeMillis()); 
manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), + (1000 * 60 * 2), pendingIntent); 
Log.v("log_tag", "REPEAT"); 

Tôi cũng xin đề nghị bạn nên tạo một mới BroadcastReceiver và trên nó làm công cụ của bạn mà bạn muốn lặp lại, và thay thế whatever.class bởi BroadccastReceiver của bạn.

+0

12-31 17: 00: 48.645: V/log_tag (2473): Hành động :: android.intent.action.BOOT_COMPLETED 12-31 17: 00: 48.649: V/log_tag (2473): REPEAT – crickpatel0024

+0

Bạn đã thêm ' content.startService (alarmIntent); '? –

+0

một phút tôi kiểm tra xem nó. – crickpatel0024

2

Cơ hội ứng dụng của bạn được cài đặt trên bộ nhớ ngoài, không thể nhận sự kiện khởi động đã hoàn tất. Bạn nên thêm android:installLocation="internalOnly" vào tệp kê khai của mình.

+0

Helmi tôi thêm nội bộ nhưng không hoạt động .. !! – crickpatel0024

Các vấn đề liên quan