Android Notification声音保持为空

时间:2018-11-30 13:22:43

标签: android notifications

我最近开始编写我的第一个包含通知的android项目的代码。我正在编写SDK 21(Android 5.0)。

当前,我通过单击应用程序中的按钮来发送通知,稍后将通过服务器端脚本来完成。在实际的主体下面,应该有一个动作按钮,当我单击它而不是打开应用程序时,该按钮会执行操作。

我还想自定义通知的行为(当通知出现时),因此将播放自定义声音,并且设备会有条件地振动。为此,我使用NotificationCompat.Builder创建通知并设置其属性:

private void sendNotification() {
    String title = noteTitleEditText.getText().toString();
    String text = noteBodyEditText.getText().toString();

    Intent activityIntent = new Intent(this.getContext(), MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this.getContext(), REQUEST_CODE, activityIntent, PendingIntent.FLAG_ONE_SHOT);

    Intent broadcastIntent = new Intent(this.getContext, MyNotificationReceiver);
    broadcastIntent.putExtra("intent_key", "Action has been triggered");
    PendingIntent actionIntent = PendingIntent.getBroadcast(this.getContext, REQUEST_CODE, broadcastIntent, PendingIntent.FLAG_ONE_SHOT);

    Notification note = new NotificationCompat.Builder(this.getContext(), getString(R.string.channel_id))
            .setSmallIcon(R.mipmap.icon)
            .setContentTitle(title)
            .setContentText(text)
            .setSound(SettingsHandler.getRingtoneUri(this.getContext()))
            .setVibrate(SettingsHandler.shouldVibrateOnPush(this.getContext()) ? new long[] {1000} : new long[] {0})
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setCategory(NotificationCompat.CATEGORY_MESSAGE)
            .setAutoCancel(true)
            .setContentIntent(contentIntent)
            .addAction(R.mipmap.another_icon, "Action", actionIntent)
            .build();

    NotificationManagerCompat manager = NotificationManagerCompat.from(this.getContext());
    manager.notify(0, note);
}

SettingsHandler是一个帮助程序类,可提供用户选择的数据,例如应用程序应振动还是应播放哪种声音。 getRingtoneUri返回一个Uri:

public synchronized static Uri getRingtoneUri(Context context) {
   SharedPreferences prefs = context.getSharedPreferences(context.getString(R.string.key), Context.MODE_PRIVATE);
   return Uri.parse(prefs.getString(context.getString(R.string.ringtone_uri), RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION).toString()));
}

测试时,它会返回类似"content://media/internal/audio/media/31"

shouldVibrateOnPush返回一个布尔值,该布尔值指示设备是否应该振动。

但是,调试控制台说声音和振动模式仍然为空。有人知道我在做什么错吗?谢谢。

0 个答案:

没有答案