Skip to content

Instantly share code, notes, and snippets.

@yihongyuelan
Created March 27, 2015 08:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yihongyuelan/4018ec6c748bdd598d30 to your computer and use it in GitHub Desktop.
Save yihongyuelan/4018ec6c748bdd598d30 to your computer and use it in GitHub Desktop.
public class IncomingNotification extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
timeSchedule(this);
}
private void timeSchedule(final Context context) {
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
postNotification(context);
}
//delay 5s
}, 5000);
}
private void postNotification(Context context) {
final NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
final Bitmap largeIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);
final Notification.Builder builder = getNotificationBuilder(context);
final PendingIntent inCallPendingIntent = createLaunchPendingIntent(context);
builder.setContentIntent(inCallPendingIntent);
configureFullScreenIntent(builder, inCallPendingIntent);
builder.setContentText("contentText");
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setContentTitle("contentTitle");
builder.setLargeIcon(largeIcon);
builder.setColor(context.getResources().getColor(R.color.dialer_theme_color));
createIncomingCallNotification(context, builder);
addPersonReference(builder);
final Notification notification = builder.build();
mNotificationManager.notify(1,notification);
}
private Notification.Builder getNotificationBuilder(Context context) {
final Notification.Builder builder = new Notification.Builder(context);
builder.setOngoing(true);
builder.setPriority(Notification.PRIORITY_HIGH);
return builder;
}
private PendingIntent createLaunchPendingIntent(Context context) {
// Create PendingIntent to open wireless setting
final Intent intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_NO_USER_ACTION
);
PendingIntent inCallPendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
return inCallPendingIntent;
}
private void configureFullScreenIntent(Notification.Builder builder, PendingIntent intent) {
//Enable heads-up notification
builder.setFullScreenIntent(intent, true);
}
private void createIncomingCallNotification(Context context, Notification.Builder builder) {
builder.setUsesChronometer(false);
addDismissAction(context,builder);
addAnswerAction(context, builder);
}
private void addDismissAction(Context context, Notification.Builder builder) {
PendingIntent answerVoicePendingIntent = createNotificationPendingIntent(
context, "com.seven.testpp");
builder.addAction(R.drawable.ic_launcher,
"dismiss",
answerVoicePendingIntent);
}
private PendingIntent createNotificationPendingIntent(Context context, String action) {
final Intent intent = new Intent(action, null,
context, NotificationBroadcastReceiver.class);
return PendingIntent.getBroadcast(context, 0, intent, 0);
}
public static class NotificationBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
Log.i("Seven", "Broadcast from Notification: " + action);
}
}
private void addAnswerAction(Context context, Notification.Builder builder) {
PendingIntent answerVoicePendingIntent = createNotificationPendingIntent(
context, "com.seven.testpp");
builder.addAction(R.drawable.ic_launcher,
"answer",
answerVoicePendingIntent);
}
private void addPersonReference(Notification.Builder builder) {
builder.addPerson(Uri.fromParts("tel", "13800138000", null).toString());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment