Уведомление Android и NoSuchMethodError
Я строю уведомление:
Notification.Builder builder = new Notification.Builder(
getApplicationContext())
.setTicker(
getApplicationContext().getString(
R.string.my_string))
.setSmallIcon(android.R.drawable.sym)
.setContentTitle(
getApplicationContext().getString(
R.string.my_string_two))
.setContentText(a.getB())
.setSound(
RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setVibrate(new long[] { 10001000 })
.setAutoCancel(true)
.setContentIntent(PendingIntent.getActivity(getApplicationContext(),0,
new Intent()
.setAction(Intent.ACTION_VIEW)
.setType(CallLog.Calls.CONTENT_TYPE)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
0));
NotificationManager nm = (NotificationManager) getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify("interstitial_tag", 1, builder.build());
С Android 4.0 я нашел ошибку: NoSuchMethodError. Как я могу решить это? Я использую Notification.Compact? Спасибо.
1 ответ
Решение
Ты можешь попробовать:
public static void sendNotification(Context context, String info){
NotificationCompat.Builder notifyBuilder = new NotificationCompat.Builder(context);
//title notifications
notifyBuilder.setContentTitle(context.getString(R.string.app_name));
//small icon
notifyBuilder.setSmallIcon(R.drawable.ic_launcher);
//set contentText
notifyBuilder.setContentText(info);
notifyBuilder.setVibrate(new long[]{100, 200, 100, 500}); notifyBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
//setAutoCancel
notifyBuilder.setAutoCancel(true);
getNotificationManager(context).notify(0, notifyBuilder.build());
}
public final static NotificationManager getNotificationManager(Context context) {
return (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
}
И когда вы использовали новый Intent(), пожалуйста, вставьте целевой класс
Intent wrapperIntent = new Intent(context, SenderBroadcast.class);
wrapperIntent.putExtra("KEY_UID", uid);
wrapperIntent.setData(Uri.parse("senderbroadcast://"+uid));
wrapperIntent.setAction("REQUESTCODE_SENDERBROADCAST");
PendingIntent.getActivity(context, RequestCode.REQUESTCODE_SENDERBROADCAST, wrapperIntent, PendingIntent.FLAG_UPDATE_CURRENT);