PreferenceManager.GetDefaultSharedPreferences(Context?)已过时:不推荐使用。

3

我最近更新了我的Android项目中的NuGet包,现在我在这段代码中获得了一条消息:

 ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);

CS0618: PreferenceManager.GetDefaultSharedPreferences(Context?)已经过时:不建议使用

点击查看图片

需要做出改变吗?像这样我的代码是否无法正确工作?我是否应该完全删除private void storeToken(String token)?我不确定我是否仍然需要private void storeToken(String token)。

    using System;
    using Android.App;
    using Android.Content;
    using Android.Util;
    using Firebase.Messaging;
    using System.Collections.Generic;
    using Android.Preferences;
    using Android.Media;
    using AndroidX.Core.App;

    namespace AndroidVersion
    {
    [Service]
    [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
    public class MyFirebaseMessagingService : FirebaseMessagingService
    {
        const string TAG = "MyFirebaseMsgService";

        public override void OnNewToken(string token)
        {
            Log.Debug(TAG, "Refreshed token: " + token);
            storeToken(token);
        }

        private void storeToken(String token)
        {
            //saving the token on shared preferences
            ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
            ISharedPreferencesEditor editor = prefs.Edit();
            editor.PutString("my_token", token);
            editor.Apply();
        }

        public override void OnMessageReceived(RemoteMessage message)
        {
            Log.Debug(TAG, "From: " + message.From);
            var body = message.GetNotification().Body;
            var title = message.GetNotification().Title;
            Log.Debug(TAG, "Notification Message Body: " + message.GetNotification().Body);
            SendNotification(body, title, message.Data);
        }

        void SendNotification(string messageBody, string Title, IDictionary<string, string> data)
        {
            var intent = new Intent(this, typeof(Activity1));
            intent.AddFlags(ActivityFlags.ClearTop);
            foreach (var key in data.Keys)
            {
                intent.PutExtra(key, data[key]);
            }

            var pendingIntent = PendingIntent.GetActivity(this,
                                                          Activity1.NOTIFICATION_ID,
                                                          intent,
                                                          PendingIntentFlags.OneShot);

            var notificationBuilder = new NotificationCompat.Builder(this, Activity1.CHANNEL_ID)
                                      .SetSmallIcon(Resource.Drawable.Icon)
                                      .SetContentTitle(Title)
                                      .SetContentText(messageBody)
                                      .SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification))
                                      .SetVibrate(new long[] { 1000, 1000, 0, 0, 0 })
                                      .SetLights(Android.Graphics.Color.Red, 3000, 3000)
                                      .SetPriority((int)NotificationPriority.High)
                                      .SetAutoCancel(true)
                                      .SetContentIntent(pendingIntent);

            var notificationManager = NotificationManagerCompat.From(this);
            notificationManager.Notify(Activity1.NOTIFICATION_ID, notificationBuilder.Build());
        }
    }
}

只需将这行代码进行更替:prefs = PreferenceManager.getDefaultSharedPreferences(context) 用以下代码替换: prefs = context.getSharedPreferences(context.packageName, Context.MODE_PRIVATE) - undefined
2个回答

0

我在我的项目中使用 implementation 'androidx.preference:preference-ktx:1.1.1' 成功替换了已弃用的 android.preference.PreferenceManager


-1
使用AndroidX.Preference;而不是Android.Preferences;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接