2015-08-09 2 views
0

Я пытаюсь использовать диспетчер аварийных сообщений для уведомления после 5 секунд. Я пробовал много сайтов, но не смог понять, дайте простой пример для объяснения того, как использовать диспетчер аварийных сигналов и подключать к нему уведомление.Менеджер уведомлений, не работающий с alarmManager

Я новичок.

Это функция, которую я использовал для настройки тревоги, и я не получаю уведомление через 5 секунд, фактически не на самом деле не в эмуляторе, а в Android-мобиле. Если поставить код для создания notififcation с нажатием кнопки, который работает отлично.

public void setAlarm(View view) 
{ 

Intent alertIntent = new Intent(this, AlertReciver.class); 

Long alertTime = new GregorianCalendar().getTimeInMillis()+5*1000; 

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

alarmManager.set(AlarmManager.RTC_WAKEUP, alertTime, PendingIntent.getBroadcast(this, 1, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT)); 

tv.setText("completed"); 
} 

и этот класс, чтобы заставить его работать

public class AlertReciver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
createNotification(context,"times Up", "5 SEcond has passed", "Alert"); 

} 

public void createNotification(Context context,String msg, String msgText, String msgAlert){ 

PendingIntent notificIntent = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0); 

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) 
     .setSmallIcon(R.drawable.ne) 
     .setContentTitle(msg) 
     .setTicker(msgAlert) 
     .setContentText(msgText); 

mBuilder.setContentIntent(notificIntent); 

mBuilder.setDefaults(NotificationCompat.DEFAULT_SOUND); 

mBuilder.setAutoCancel(true); 

NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE); 

mNotificationManager.notify(1, mBuilder.build()); 


} 

это проявляется

<?xml version="1.0" encoding="utf-8"?> 

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.deepaksingh.goinnotifying" > 
<uses-permission android:name="android.permission.alarm.permission.SET_ALARM" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".MoreInfoNotification" 
     android:label="@string/title_activity_more_info_notification" > 
     <meta-data 
      android:name="android support.PARENT_ACTIVITY" 
      android:value=".MainActivity" /> 

</application> 

+0

вы rigister своего класса вещания в манифесте? – yshahak

+0

Да также добавили его в манифест слишком –

+0

Добавьте журналы в журналы получателей, чтобы узнать, не вызвано ли это вообще – yshahak

ответ

0

Вы havn't установить разрешение на следе:

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

И вы не регистрировали получателя.

<?xml version="1.0" encoding="utf-8"?> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".MoreInfoNotification" 
     android:label="@string/title_activity_more_info_notification" > 
    <meta-data 
     android:name="android support.PARENT_ACTIVITY" 
     android:value=".MainActivity" /> 

    <receiver android:name=".AlertReciver "/> 

</application> 
+0

Мне просто нужно написать

+0

Нет. нужно просто имя класса. вы можете поставить все имя с пакетами, чтобы быть уверенным – yshahak

+0

И если вам не нужна метка для него – yshahak