2017-08-30 11 views
0

ユーザーが入力した秒後に通知を作成しようとしています。 AlarmManagerとBroadcastReceiverは正常に機能しているようです(onReceive()のトーストは正しい時間の後に表示されます)が通知が機能しない(表示されません)。Androidの通知がBroadcastReceiverに表示されない

私の通知で何が問題になっていますか?

これは私のコードです:

MainActivity:

package com.example.user.alarm; 
import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 


public class MainActivity extends AppCompatActivity { 

Button btn_set; 
EditText et_time; 

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


    btn_set = (Button) findViewById(R.id.setAlarmButton); 
    et_time = (EditText) findViewById(R.id.edittext); 

    btn_set.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      int time = Integer.parseInt(et_time.getText().toString()); 

      Intent intent = new Intent(MainActivity.this, Alarm.class); 
      PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0); 
      AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
      am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+time*1000, pi); 

     } 
    }); 
} 
} 

アラーム

package com.example.user.alarm; 

import android.app.NotificationManager; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.support.v4.app.NotificationCompat; 
import android.widget.Toast; 



public class Alarm extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent1) { 

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context); 
    mBuilder.setSmallIcon(R.drawable.ic_action_name); 
    mBuilder.setContentTitle("Notification Alert, Click Me!"); 
    mBuilder.setContentText("Hi, This is Android Notification Detail!"); 

    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    // notificationID allows you to update the notification later on. 
    mNotificationManager.notify(0, mBuilder.build()); 

    Toast.makeText(context, "Alarm Alarm Alarm", Toast.LENGTH_SHORT).show(); 
} 
} 

マニフェスト

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.user.alarm"> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 


    <activity 
     android:name="com.example.user.alarm.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="com.example.user.alarm.Alarm" 
     /> 
</application> 

答えて

0

ターゲットAPIがAndroid Oの場合は、チャネルIDが必要です。

+0

ああ、私はAndroid Oのこの変更を完全に見逃しました。今はすべてが機能しています、ありがとうございます! –

関連する問題