2012-02-03 3 views
0

부팅 직후 알람 수신자를 설정하려고합니다. 따라서 나는 알람을 등록해야하는 OnBootReceiver를 가지고있다. onBootReceiver가 작동하고 호출되지만, 어쨌든 내 AlarmReceiver 클래스를 찾을 수 없습니다. 성공적으로 부팅 후 시작OnBootReceiver는 작동하지만 AlarmReceiver를 찾지 못합니다.

OnBootReceiver : 당신이 볼 수있는 당신으로

public class OnBootReceiver extends BroadcastReceiver { 

    private static final String TAG = "OnBootReceiver"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i(TAG, "called"); 

     Intent i = new Intent(context, com.packagenames.AlarmReceiver.class); 
     PendingIntent pi = PendingIntent.getService(context, 0, i, 0); 
     AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

     Calendar time = Calendar.getInstance(); 
     time.setTimeInMillis(System.currentTimeMillis()); 
     time.add(Calendar.SECOND, 30); 

     am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), time.getTimeInMillis(), pi); 

    } 

} 

, 그것은 알람이 com.packagenames.AlarmReceiver.class를 호출하려고 구성합니다. 이 클래스는 존재와 같은 패키지에 있습니다

public class AlarmReceiver extends BroadcastReceiver { 

    private static final String TAG = "AlarmReceiver"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i(TAG, "alarm received"); 
     Intent i = new Intent(context, com.packagename.DataService.class); 
     i.putExtra("action", "process"); 
     context.startService(i); 
    } 

} 

불행하게도, 나는 다음과 같은 오류가 발생합니다 :

02-03 09:22:25.344: W/ActivityManager(103): Unable to start service Intent { flg=0x4 cmp=com.phonegap.packagename/.AlarmReceiver (has extras) }: not found

안드로이드 매니페스트이

<application> 

// activities etc 

     <receiver 
      android:name="com.phonegap.packagename.OnBootReceiver" 
      android:enabled="true" 
      android:exported="false" 
      android:label="OnBootReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 

     <receiver 
      android:name="com.phonegap.packagename.AlarmReceiver" 
      android:enabled="true" 
      android:label="AlarmReceiver"> 
      <intent-filter> 
      </intent-filter> 
     </receiver> 

    </application> 

처럼 보이는

가 수행 당신은 참조하십시오 잘못? 어쩌면 뭔가 잊었을까요?

덕분에

편집 : 매니페스트에, 나는 OnBootReceiver 작업을하기 위해

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

을 추가했다. 알람과 비슷한 것이 필요합니까?

+0

합니다. – JoxTraex

+0

[http://stackoverflow.com/questions/4459058/alarm-manager-example/8801990#8801990] [1] [1] : http://stackoverflow.com/questions/4459058/alarm-manager- 예/8801990 # 8801990 – XXX

답변

1

보류중인 의도를 만들 때 getService 대신 getBroadcast를 사용해야합니까?

0

응용 프로그램이 SD 카드에 설치되어 있지 않은 경우 전체 수신기 항목 만 작동합니다. 그렇게 매니페스트 파일이 추가 :

안드로이드 :의 installLocation = "internalOnly"당신은 당신의 알람 아무것도를 추가 할 필요가 없습니다

관련 문제