Bas*_*nth 14 notifications android push-notification
我正在尝试在我的应用程序中为Notificaitons设置自定义声音,振动和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());
Run Code Online (Sandbox Code Playgroud)
我也加入了振动许可.在运行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"/>
Run Code Online (Sandbox Code Playgroud)
编辑2:适用于棉花糖版手机.不适用于带棒棒糖的手机.
编辑3:也适用于牛轧糖(一加3T手机).
根据您的评论,您的手机本身似乎有问题.我在(1)中询问了振动,因为你设置的{ 1000, 100, 1000, 100, 1000 }
是1000毫秒的延迟,然后是100毫秒的振动.这可能太少,无法检测到.
无论如何,我在某些设备上遇到了相同的振动问题,所以我直接使用了振动器服务.发出通知后,我所做的就是这样.根据你的评论,我还添加了铃声管理器部分.
// built the notification without vibration and sound
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(1, builder.build());
// start vibrator manually
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(new long[] {1000, 100, 1000, 100, 1000}, Constants.VIBRATION_ONCE);
// start sound manually
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notif1);
Ringtone ringtone = RingtoneManager.getRingtone(this, uri);
ringtone.play();
Run Code Online (Sandbox Code Playgroud)
这似乎适用于大多数设备.至于通知之光,已在官方文件中说明
设置设备上指示灯LED的所需颜色,以及闪烁占空比(以毫秒为单位).并非所有设备都会尊重所有(甚至任何)这些值.
如果您使用的是Mi设备,请尝试"信任"该应用并启用通知所需的所有权限,包括"自动启动".它适用于大多数情况.
归档时间: |
|
查看次数: |
1290 次 |
最近记录: |