【发布时间】:2017-04-09 11:17:31
【问题描述】:
我正在尝试为我的应用中的通知设置自定义声音、振动和 LED 颜色 - 但它不起作用。设置标题、图标、颜色等其他一切都可以正常工作。我已经尝试了 Stackoverflow 中建议的许多解决方案,但它们也没有奏效,所以我在问一个问题。
这是我的通知代码 -
Intent resultIntent = new Intent(this, ActivityB.class);
Bundle b = new Bundle();
//Some bundle related Code
resultIntent.putExtra("bundle",b);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addNextIntent(new Intent(this, ActivityA.class));
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
android.support.v7.app.NotificationCompat.Builder builder = new android.support.v7.app.NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.ic_small_logo);
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_logo_large));
builder.setContentTitle(notification.getTitle());
builder.setContentText(notification.getBody());
builder.setColor(Color.parseColor("#FFFFFF"));
builder.setStyle(new NotificationCompat.BigTextStyle());
builder.setVibrate(new long[] { 1000, 100, 1000, 100, 1000 });
builder.setLights(Color.YELLOW, 3000, 3000);
builder.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notif1));
builder.setAutoCancel(true);
builder.setContentIntent(resultPendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(1, builder.build());
我也添加了振动权限。在运行 Lollipop 和 Marshmallow 的 2 部手机上对此进行了测试。
编辑 1:
共享我的应用程序使用的所有权限 -
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE"/>
编辑 2: 适用于棉花糖版手机。不适用于带有 Lollipop 的手机。
编辑 3: 也适用于 Nougat(一加 3T 手机)。
【问题讨论】:
-
setVibrate()将不起作用,除非您拥有VIBRATE权限。如果设备没有用于通知的 LED,setLights()可能无法工作。 -
我已经添加了振动权限,我在问题的结尾提到了这一点。我已经在使用 LED 通知的设备上进行了测试。
-
尝试使用builder.setPriority() developer.android.com/reference/android/app/…
-
@MoosaBaloch 我将优先级设置为 PRIORITY_HIGH 但它不起作用..
-
那么 .setDefaults(Notification.DEFAULT_ALL) 是否按预期工作?尝试将所有这些设置设置为默认值,以检查您的通知是否正确构建..
标签: android push-notification notifications