1

api 25まで詩に完全に動作します。 私はAndroidに新しく、Notification Alarm Managerで通知を表示しています。アラームマネージャは通知APIを表示しません26

いずれにしても、エラーが発生しましたか?

主な活動:

package br.exemploalarmmanagerbn; 

import java.util.Calendar; 

import android.app.Activity; 
import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     boolean alarmeAtivo = (PendingIntent.getBroadcast(this, 0, new Intent("ALARME_DISPARADO"), PendingIntent.FLAG_NO_CREATE) == null); 

     if(alarmeAtivo){ 
      Log.i("Script", "Novo alarme"); 

      Intent intent = new Intent("ALARME_DISPARADO"); 
      PendingIntent p = PendingIntent.getBroadcast(this, 0, intent, 0); 

      Calendar c = Calendar.getInstance(); 
      c.setTimeInMillis(System.currentTimeMillis()); 
      c.add(Calendar.SECOND, 3); 

      AlarmManager alarme = (AlarmManager) getSystemService(ALARM_SERVICE); 
      alarme.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), 5000, p); 
     } 
     else{ 
      Log.i("Script", "Alarme já ativo"); 
     } 
    } 

    @Override 
    public void onDestroy(){ 
     super.onDestroy(); 

     /*Intent intent = new Intent("ALARME_DISPARADO"); 
     PendingIntent p = PendingIntent.getBroadcast(this, 0, intent, 0); 

     AlarmManager alarme = (AlarmManager) getSystemService(ALARM_SERVICE); 
     alarme.cancel(p);*/ 
    } 
} 

BroadcastReceiverAux

package br.exemploalarmmanagerbn; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.BitmapFactory; 
import android.media.Ringtone; 
import android.media.RingtoneManager; 
import android.net.Uri; 
import android.support.v4.app.NotificationCompat; 
import android.util.Log; 

public class BroadcastReceiverAux extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Log.i("Script", "-> Alarme"); 

     gerarNotificacao(context, new Intent(context, MainActivity.class), "Nova mensagem", "Título", "Descrição nova mensagem"); 
    } 


    public void gerarNotificacao(Context context, Intent intent, CharSequence ticker, CharSequence titulo, CharSequence descricao){ 

if (Build.VERSION.SDK_INT >= 26) { 
      if (nm.getNotificationChannel(CHANNEL_ID) == null) { 
       nm.createNotificationChannel(new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, 
         NotificationManager.IMPORTANCE_DEFAULT)); 
      } 
     } 

     NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     PendingIntent p = PendingIntent.getActivity(context, 0, intent, 0); 

     NotificationCompat.Builder builder = new NotificationCompat.Builder(context); 
     builder.setTicker(ticker); 
     builder.setContentTitle(titulo); 
     builder.setContentText(descricao); 
     builder.setSmallIcon(R.drawable.ic_launcher); 
     builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher)); 
     builder.setContentIntent(p); 

     Notification n = builder.build(); 
     n.vibrate = new long[]{150, 300, 150, 600}; 
     n.flags = Notification.FLAG_AUTO_CANCEL; 
     nm.notify(R.drawable.ic_launcher, n); 

     try{ 
      Uri som = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
      Ringtone toque = RingtoneManager.getRingtone(context, som); 
      toque.play(); 
     } 
     catch(Exception e){} 
    } 
} 

マニフェスト

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

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="18" /> 
    <uses-permission android:name="android.permission.VIBRATE"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="br.exemploalarmmanagerbn.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> 
     <receiver android:name="BroadcastReceiverAux" android:label="BroadcastReceiverAux"> 
      <intent-filter> 
       <action android:name="ALARME_DISPARADO"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </receiver> 
    </application> 

</manifest> 

Ocódigoqueのpostei abaixo ESTA funcionando perfeitamente、MAS NAO posso afirmar POR QUEナオ私notifica?

+0

暗黙API 26+あなたは明示的な 'Intent'sを使っていたかもしれません。新しいインテント( "ALARME_DISPARADO")を新しいインテント(this、BroadcastReceiverAux.class)に変更し、マニフェストの ''から '<インテントフィルタ>'を削除してください。また、実際には回答ではないので、下に投稿した回答を削除してください。追加情報を提供するには、質問の下のタグの下にある編集リンクを左に使用します。 –

答えて

1

あなたがIntentServiceから通知を送信してみ

NotificationManager mNotificationManager = 
     (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
// The id of the channel. 
String id = "my_channel_01"; 
// The user-visible name of the channel. 
CharSequence name = getString(R.string.channel_name); 
// The user-visible description of the channel. 
String description = getString(R.string.channel_description); 
int importance = NotificationManager.IMPORTANCE_HIGH; 
NotificationChannel mChannel = new NotificationChannel(id, name, importance); 
// Configure the notification channel. 
mChannel.setDescription(description); 
mChannel.enableLights(true); 
// Sets the notification light color for notifications posted to this 
// channel, if the device supports this feature. 
mChannel.setLightColor(Color.RED); 
mChannel.enableVibration(true); 
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); 
mNotificationManager.createNotificationChannel(mChannel); 


// The id of the channel. 
String CHANNEL_ID = "my_channel_01"; 
NotificationCompat.Builder mBuilder = 
     new NotificationCompat.Builder(this, CHANNEL_ID) 
      .setSmallIcon(R.drawable.notification_icon) 
      .setContentTitle("My notification") 
      .setContentText("Hello World!"); 
+0

私はこの問題がAlarmManagerにあると信じています。 '' –

+0

ブロードキャストを受信できますか? –

+0

はapi 25まで動作します –

0

notificatins投稿する最初の通知チャネルを作成し、そのチャネルを使用する必要があります。

  1. IntentServiceは(でそれを宣言することを忘れないでください作成マニフェスト)
  2. gerarNotificacao()メソッドをIntentServiceクラスに移動
  3. IntentServiceインサイドあなたのBroadcastReceiverのonReceive()メソッド
  4. から
  5. 実行IntentServiceは、onHandleIntentでgerarNotificacaoを()()メソッドを呼び出し
  6. Intent`sは、もはや(ほとんどの)マニフェスト登録レシーバのために働くん `
関連する問題