2013-07-30 4 views
0

내 앱에서 알람 기반 앱으로 작업하고 있습니다. 다음 코드를 사용하여 알람을 설정했습니다. 알람을 생성하면 알람이 생성되지만 알람은 브로드 캐스트 리시버로 이동하지 않습니다. 나는 여러 시간을했지만 그게 나를 위해 일하지 못했습니다. 안드로이드 매니페스트 파일에 브로드 캐스트 리시버를 올바르게 추가 했음에도 불구하고.Android 브로드 캐스트 수신기

1.Setting 알람 클래스 :

public class Alertedit extends Activity { 

    boolean AlarmEnabled; 
    final static int RQS_1 = 1; 
    TimePicker myTimePicker; 

private SQLiteConnectornew loginDataBaseAdapter; 


     protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_alertaddlist); 

    Button bt1 = (Button) findViewById(R.id.alerttime); 

     bt1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       openTimePickerDialog(false); 
      }});} 

      private void openTimePickerDialog(boolean is24r){ 
     Calendar calendar = Calendar.getInstance(); 

     timePickerDialog = new TimePickerDialog(
      Alertedit.this, 
      onTimeSetListener, 
      calendar.get(Calendar.HOUR_OF_DAY), 
      calendar.get(Calendar.MINUTE), 
      is24r); 
     timePickerDialog.setTitle("Set Alarm Time"); 

     timePickerDialog.show();} 

     OnTimeSetListener onTimeSetListener 
     = new OnTimeSetListener(){ 

     @Override 
     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 

      Calendar calNow = Calendar.getInstance(); 
      Calendar calSet = (Calendar) calNow.clone(); 

      calSet.set(Calendar.HOUR_OF_DAY, hourOfDay); 
      calSet.set(Calendar.MINUTE, minute); 
      calSet.set(Calendar.SECOND, 0); 
      calSet.set(Calendar.MILLISECOND, 0); 

      if(calSet.compareTo(calNow) <= 0){ 
       //Today Set time passed, count to tomorrow 
       calSet.add(Calendar.DATE, 1); 
      } 

      setAlarm(calSet); 
     } 

     private void setAlarm(Calendar targetCal) { 
      // TODO Auto-generated method stub 
      bt1.setText("" + targetCal.getTime()); 
      Log.d("set", "Alarm set"); 
      Intent intent = new Intent(Alertedit.this, AlarmReciever.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(Alertedit.this, RQS_1, intent, 0); 
      AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
      alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent); 

     }}; 

2.Receiver 클래스 :

public class AlarmReciever extends BroadcastReceiver { 


@Override 
public void onReceive(Context context, Intent intent) { 
    try { 
     /* Display an alert */ 
     Log.e("value", "how are you??"); 
     Toast.makeText(context, "How are you?", Toast.LENGTH_LONG).show(); 
    } 
    catch (Exception r) { 
     Toast.makeText(context, "You were supposed to do something" 
       +" now but I can't retrieve what it was.", 
       Toast.LENGTH_SHORT).show(); 
     Log.e("ALARM_RECEIVER", r.toString()); 
    } 
    } 

은}

는 는 3.Manifest 파일

:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.contactlist" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="7" 
    android:targetSdkVersion="17" /> 
<uses-permission android:name="android.permission.INTERNET"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:screenOrientation="portrait" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.contactlist.Primemfrontpage" 

     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
      <activity 
     android:name="com.example.contactlist.Login" 
     android:label="@string/app_name" > 
    </activity> 
      <activity 
     android:name="com.example.contactlist.Registration" 
     android:label="@string/app_name" > 
    </activity> 
    <activity 
     android:name="com.example.contactlistnew.Alertedit" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" > 
    </activity> 

    <receiver android:name="com.example.contactlistnew.AlarmReceiver"> 
    </receiver></application></manifest> 

답변

0

그것은 당신이해야 보인다 당신의 목적에 맞는 인 텐트 필터 추가 시간이 다 할 때 ceiver가, 브로드 캐스트 리시버에서

<receiver android:name="com.example.contactlistnew.AlarmReceiver"> 
    <intent-filter> 
     <action android:name="android.alarm.demo.action" /> 
    </intent-filter> 
</receiver> 
+0

같은 의도에서 메시지 뭔가를 읽어야한다, 경보는 방송 전송합니다. – Jun

+0

또한 알람 시간을 설정할 수 있습니다. 시간이 과거에 발생하면 알람이 즉시 트리거됩니다. – Jun

0

다음과 같이 제 생각에는 그

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class MyBroadcastReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 

     // Extract data included in the Intent 
     CharSequence intentData = intent.getCharSequenceExtra("message"); 
     Toast.makeText(context, "Received the Intent's message: "+intentData, Toast.LENGTH_LONG).show(); 
    } 

} 
관련 문제