2012-09-04 3 views
0

경보가 트리거 될 때 알림을 표시하는 응용 프로그램을 작성하고 있습니다. 알림은 응용 프로그램이 실행 중일 때만 표시되지만 응용 프로그램이 닫힌 경우에도 알림이 유지되어 사용자가 알림을 선택하면 응용 프로그램을 다시 실행합니다. 그것을하는 방법이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다. 또한 모든 예제 또는 자습서를 제공해 주시면 감사하겠습니다. 고맙습니다.응용 프로그램이 닫힌 경우에도 알림이 유지되도록하십시오.

답변

0

먼저 서비스를 사용하여 알림을 만들어야합니다. 나는 전에도이 같은 질문을했다. 나는 phonegap을 사용하여 플러그인에서 알림을 만들었지 만 서비스는 백그라운드에서 실행될 수 있습니다. 서비스에서 나는 알림을 생성하기 위해 코드를 추가하고, 의도는 브로드 캐스트 리시버를 사용한다.

위의 코드에서 알 수 있듯이 getActivity를 주석 처리하고 getBroadcast로 변경했습니다. 서비스에서 실행되는 것은 앱이 종료 된 상태에서 알림을받을 수 있음을 의미합니다. 추가 닫힌 경우 수신기의 의도 앱을 열 수 있으려면

... 

@Override 
public final void onReceive(Context context, Intent intent) { 
    Log.v('TAG','TEST'); 


    //start activity 
    Intent i = new Intent(); 
    i.setClassName("package.path", "package.path.mainActivity"); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(i); 
} 
... 

및 XML 내가

을 사용하고 그것에 대해 어떻게이
+0

안녕하세요, 답변 해 주셔서 감사합니다. 신청서에서 사용해 보겠습니다. 문제가 있으면 알려 드리겠습니다. (: – CallMyName

+0

안녕하세요, [여기] (http://android-er.blogspot.sg/2011/04/start-service-to-send-notification.html)에서 참조로 코드를 테스트했습니다.하지만 응용 프로그램을 닫고 알림을 탭하면 다시 응용 프로그램으로 리디렉션되지 않습니다.이 문제에 대해 나를 안내해 주시겠습니까? (PS : 실제 장치에서 테스트했습니다.) – CallMyName

+0

누락 된 xml 조각을 추가했습니다. 그것을 해결합니다 –

3

도움이되기를 바랍니다

<receiver android:name="path.to.receiver" android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="path.to.receiver.BROADCAST" /> 
    </intent-filter> 
</receiver> 

alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); 

그리고 앞으로 알림을 푸시하고 싶습니다. alarmMenager 앱이 오래 동안 작동합니다. 내가 실행하는 동안 allarm menager에게 알림이 표시되지 않는 futer 및 close app에 알림을 설정하도록 요청합니다. 내가해야 할 일이 있습니까?

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.HOUR, HOUR_OF_DAY); 
cal.set(Calendar.MINUTE, MINUTE); 
//cal.add(Calendar.SECOND, SECOND_OF_DAY); 
Intent intent = new Intent(UnityPlayer.currentActivity, TimeAlarm.class); 
intent.putExtra("alarm_status", statusMessage); 
intent.putExtra("alarm_title", title); 
intent.putExtra("alarm_content", content); 
Log.i("SenderEvent ", "przygotowane dane"); 
PendingIntent sender = PendingIntent.getBroadcast(UnityPlayer.currentActivity.getApplicationContext(), REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); 

그리고 리시버 : 응용 프로그램이 가까이 동안

Bundle bundle = intent.getExtras(); 
     String statusMessage = bundle.getString("alarm_status"); 
     String title = bundle.getString("alarm_title"); 
     String content = bundle.getString("alarm_content"); 
     nm = (NotificationManager) context 
       .getSystemService(Context.NOTIFICATION_SERVICE); 
     PendingIntent contentIntent = PendingIntent.getActivity(context, 0, 
       new Intent(), 0); 
Notification notif =new Notification();//R.drawable.ic_launcher,statusMessage, System.currentTimeMillis());; 
     //notif.largeIcon = bitmap; 
     notif.icon =2130837504; 
     notif.tickerText=statusMessage; 
     notif.when= System.currentTimeMillis(); 
     /* 
     new Notification(0, 
       statusMessage, System.currentTimeMillis());*/ 
     notif.setLatestEventInfo(context, title, content, contentIntent); 
     nm.notify(NOTIFY_ME_ID, notif); 

가 무슨 잘못이와 미래에 알림을 밀어 여기

유 내 이벤트 보낸 사람있어?

관련 문제