我没有要测试的设备早于4.1。我正在尝试使用以下代码测试推送通知。它大部分都来自Notification documentation。我的代码会崩溃还是NotificationCompat类为我优雅地处理所有这些事情?

在“处理兼容性”部分下,其内容为:

处理兼容性


并非所有通知功能都可用于特定版本,
即使设置它们的方法在支持库类中
NotificationCompat.Builder。例如,操作按钮取决于
在展开的通知中,仅出现在Android 4.1及更高版本上,
因为扩展的通知本身仅在
Android 4.1及更高版本。

为确保最佳兼容性,请使用
NotificationCompat及其子类,尤其是
NotificationCompat.Builder。此外,当您
实施通知:

...


那么这是否意味着如果我使用NotificationCompat类,它将为我处理所有兼容性?

我担心的代码(因为它使用BigTextStyle):

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext).setSmallIcon(R.drawable.ic_launcher).setContentTitle("Title")
                .setContentText(String.format("%s", message));
        // Creates an explicit intent for an Activity in your app
        Intent resultIntent = new Intent(mContext, ActivityMain.class);

        // The stack builder object will contain an artificial back stack for
        // the
        // started Activity.
        // This ensures that navigating backward from the Activity leads out of
        // your application to the Home screen.
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext);
        // Adds the back stack for the Intent (but not the Intent itself)
        stackBuilder.addParentStack(MainActivity.class);
        // Adds the Intent that starts the Activity to the top of the stack
        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
        mBuilder.setContentIntent(resultPendingIntent);
        NotificationManager mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
        // Add max priority
        mBuilder.setPriority(NotificationCompat.PRIORITY_MAX);
        // Add bigTextStyle
        NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle();
        bigTextStyle.bigText(String.format("%s", message));
        mBuilder.setStyle(bigTextStyle);
        mBuilder.setAutoCancel(true);
        // mId allows you to update the notification later on.
        mNotificationManager.notify(1, mBuilder.build());

最佳答案

你没有什么可担心的。


用于生成包含大量文本的大幅面通知的Helper类。
如果平台不提供大幅面通知,则此方法无效。用户将始终看到普通的通知视图。


NotificationCompat.BigTextStyle

09-11 20:57