【问题标题】:Updating notification texts when changing device language更改设备语言时更新通知文本
【发布时间】:2013-10-31 16:36:34
【问题描述】:

我是 Android 开发新手,我有一个问题。

我正在为用户创建通知。没关系。 问题是当我更改设备语言时,我的通知不会自己更新。我不知道在 Android 上是否有任何本地方法可以做到这一点。

目前,我的解决方案是:在创建通知时,我创建一个线程来验证语言是否已更改。如果是这样,它会更新我的通知。当用户清理通知时线程停止。

所以,我不知道这是否是一个好的做法,或者是否还有其他原因。

PS:应用程序有很多 strings.xml 文件来翻译字符串。我正在使用 Thread 类来创建线程。

提前谢谢你的英语不好!

【问题讨论】:

    标签: android notifications auto-update


    【解决方案1】:

    在您的应用程序类中,您可以保留当前显示的通知 ID 的引用及其信息。您可以在onConfigurationChanged(Configuration newConfig) 中检测语言变化并在那里更新您的通知。

    public class App extends Application {
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            //update your notifications there is no need for a Thread
        }
    }
    

    另一种解决方案(真正的)

    为区域设置更改添加接收器

    public class MyReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            //retrieve the list of notifications
            //update them (no need for thread)
        }
    }
    

    添加到您的清单中:

    <receiver android:name="MyReceiver">
        <intent-filter>
            <action android:name="android.intent.action.LOCALE_CHANGED">
            </action>
        </intent-filter>
    </receiver>
    

    【讨论】:

    • 你好,谢里夫,谢谢你的回答,但它没有用。我应该在 manifest.xml 中写一些东西吗?作为补充,我从 AsyncTask 类中触发了这个通知。我不知道这有什么不同。
    • 发送通知时,需要将通知的id保存在Application实例中。然后 onConfigurationChanged,你需要用这些 id 更新通知。
    • 我明白这一点,但这仍然不是重点。我无法在我的应用程序中保存 notificationId,因为我没有应用程序来更新通知。用户可以在更改设备语言之前停止应用程序,因此,在这种情况下,通知将不会更新八次。除了提供服务之外,我无法想象这样做的另一个原因。但我不知道仅仅为了更新通知而提供服务是否可行。
    • 为什么在那种情况下,用户会更改手机的语言?
    • 嗯,没有原因,但它可能会发生。我只是想知道是否有什么可以做我想做的事。正如我告诉你的那样,我认为唯一的原因是提供服务来处理它,但我想知道是否还有其他原因......实际上,尝试在您的设备上截屏,然后更改语言。那是同一个问题。
    【解决方案2】:

    我很可能无法正确理解您的问题。

    因为你有很多 strings.xml 文件来翻译字符串。
    您只需要将它们放在适当的文件夹中:

    res/values-pt-rPT //葡萄牙葡萄牙
    res/values-fr-rFR //法国法国
    res/values-fr-rCA //法国法国加拿大

    等等。

    【讨论】:

    • 你好拉玛拉尔。我会尝试再次解释。想象一下你有一个应用程序。比这个应用程序触发一个通知。此通知保留在状态栏中。好吧,你让它在那里,关闭你的应用程序。通知在那里继续。现在,尝试转到配置并更改设备语言。此时,设备已更新并获得新语言。去看看那里的通知。它没有改变。它继续使用最后一种语言。如果我不清楚,请抱歉。
    猜你喜欢
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多