如何更改通知的应用程序名称?

Posted

技术标签:

【中文标题】如何更改通知的应用程序名称?【英文标题】:How can I change the application name of my notification? 【发布时间】:2020-08-20 04:17:12 【问题描述】:

我的用户可以选择更改应用程序图标和应用程序名称,为此我使用了activity-alias,效果很好。

例如:

应用程序名称为“应用程序名称”的默认图标 应用程序名称为“备用应用程序名称”的备用图标

但是,当我向用户发送通知时,如果他们选择了备用图标/应用程序名称,则通知标题包含默认应用程序。我该如何改变?

这是我的notificationBuilder

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, "default")
                .setSmallIcon(isAlternativeLaunched ? R.drawable.ic_alternative : R.drawable.ic_default)
                .setContentTitle("This is my title")
                .setContentText("This is my content")
                .setSubText("This is my text")
                .setColor(ContextCompat.getColor(context, R.color.colorPrimary));

PS:我已经检查过,使用替代名称时我的应用程序的标题设置正确,只有通知具有旧标题。


编辑:查看文档https://developer.android.com/guide/topics/ui/notifiers/notifications#Templates 据说:

应用名称:这是系统提供的

我不明白的是,为什么它不更改应用名称? 我的activity-alias 是这样的:

<activity-alias
    android:name="my.package.name.DefaultActivity"
    android:enabled="true"
    android:icon="@mipmap/ic_launcher_default"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round_default"
    android:targetActivity="my.package.name.MainActivity">

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity-alias>

<activity-alias
    android:name="my.package.name.AlternativeActivity"
    android:enabled="false"
    android:label="@string/app_name_alternative"
    android:icon="@mipmap/ic_launcher_alternative"
    android:roundIcon="@mipmap/ic_launcher_alternative_round"
    android:targetActivity="my.package.name.MainActivity">

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity-alias>

【问题讨论】:

我想这会对你有所帮助***.com/questions/52076497/… 我宁愿避免使用库只是为了更改应用程序名称,而且我不确定是否能看到任何可以应用的答案 那么你必须以编程方式更改你的styles.xml 看看这里***.com/questions/6936800/… 如何在通知中定位应用程序名称?我还没有找到任何方法。 【参考方案1】:

我找到了使用Custom Notification的解决方法

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/layout"
    android:layout_
    android:layout_
    android:padding="10dp"
    android:layout_marginStart="16dp"
    android:layout_marginLeft="16dp">

    <TextView android:id="@+id/text_appname"
        android:layout_
        android:layout_
        android:textAppearance="@style/TextAppearance.AppCompat.Caption"
        android:textSize="8sp"
        android:text="Appname"
        android:paddingLeft="5dp" />

    <TextView android:id="@+id/text_title"
        android:layout_
        android:layout_
        android:text="Title"
        android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
        android:layout_below="@id/text_appname"/>

    <TextView android:id="@+id/text_message"
        android:layout_
        android:layout_
        android:text="Text"
        android:layout_below="@id/text_title" />
</RelativeLayout>
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.notif_custom_view);
remoteViews.setTextViewText(R.id.text_appname, context.getString(isAlternativeLaunched ? R.string.app_name_alternative : R.string.app_name));
remoteViews.setTextViewText(R.id.text_title, "This is my title");
remoteViews.setTextViewText(R.id.text_message, "This is my text");

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, "default")
        .setCustomContentView(remoteViews)
        .setColor(ContextCompat.getColor(context, R.color.colorPrimary));

NotificationManagerCompat.from(context).notify(0, notificationBuilder.build());

【讨论】:

以上是关于如何更改通知的应用程序名称?的主要内容,如果未能解决你的问题,请参考以下文章

更改前屏 iOS 上的通知图标和应用程序名称

WatchKit:在通知短外观和长外观中更改应用名称?

OneSignal 通知在更改包名称后停止工作

如何在 Laravel 邮件通知中更改名称

无法更改 AppleWatch 通知中的窗扇标题

iOS 本地通知显示旧应用程序名称