내 앱에서 알람 기반 앱으로 작업하고 있습니다. 다음 코드를 사용하여 알람을 설정했습니다. 알람을 생성하면 알람이 생성되지만 알람은 브로드 캐스트 리시버로 이동하지 않습니다. 나는 여러 시간을했지만 그게 나를 위해 일하지 못했습니다. 안드로이드 매니페스트 파일에 브로드 캐스트 리시버를 올바르게 추가 했음에도 불구하고.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>
같은 의도에서 메시지 뭔가를 읽어야한다, 경보는 방송 전송합니다. – Jun
또한 알람 시간을 설정할 수 있습니다. 시간이 과거에 발생하면 알람이 즉시 트리거됩니다. – Jun