getBaseContext не может быть использован, может ли что-то заменить его? - PullRequest
0 голосов
/ 04 марта 2012

Итак, я хочу использовать свои предпочтения с помощью SharedPreference, но у меня возникла проблема при использовании этого кода:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(Context);

Я не могу использовать getBaseContext (); метод, потому что мой класс не расширяет класс деятельности. Что я должен делать? Я попытался использовать контекст, который дал onReceive (arg0), но он все еще не работает.

Это мой код:

public class SMSReceiver extends BroadcastReceiver{

private static final int NOTIF_ID = 0;

@Override
public void onReceive(Context arg0, Intent arg1) {
    // TODO Auto-generated method stub

    Bundle bundle = arg1.getExtras();
    SmsMessage[] msgs = null;
    String str = "";
    if (bundle != null) {
        Object[] pdus = (Object[]) bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];

        for (int i = 0; i < msgs.length; i++) {
            msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
            str += "You Get New SMS from "
                    + msgs[i].getOriginatingAddress();
            str += " :";
            str += msgs[i].getMessageBody().toString();
            str += "\n";

            Toast.makeText(arg0, str, Toast.LENGTH_SHORT).show();
            **//THIS IS THE SHAREDPREFERENCES**
            SharedPreferences sp = PreferenceManager
                    .getDefaultSharedPreferences(**NEED HELP HERE**);
            boolean notifStatus = sp.getBoolean("notification", true);
            if (notifStatus) {

                NotificationManager nm = (NotificationManager) arg0
                        .getSystemService(Context.NOTIFICATION_SERVICE);

                String tickerText = str;

                Notification notif = new Notification(
                        R.drawable.ic_launcher, tickerText,
                        System.currentTimeMillis());

                notif.flags = Notification.FLAG_AUTO_CANCEL;

                String contentTitle = msgs[i].getOriginatingAddress();
                String contentText = msgs[i].getMessageBody().toString();

                Intent intent = new Intent(arg0, SMSReply.class);
                PendingIntent pi = PendingIntent.getActivity(arg0, 0,
                        intent, 0);

                notif.setLatestEventInfo(arg0, contentTitle, contentText,
                        pi);
                notif.defaults = Notification.DEFAULT_ALL;
                nm.notify(NOTIF_ID, notif);

                String tempSMS = msgs[i].getOriginatingAddress();
                Intent pass = new Intent();
                Bundle bundlePass = new Bundle();

                bundlePass.putString("key", tempSMS);
                pass.putExtras(bundlePass);
            }
        }
    }
}

Идея в том, что я хочу включить / выключить свое уведомление, используя предпочтения

Ответы [ 2 ]

2 голосов
/ 04 марта 2012

вы можете сделать это:

SharedPreferences sp = arg0.getSharedPreferences(yourPreferencesName, arg0.MODE_PRIVATE);
0 голосов
/ 06 марта 2012

ОТВЕТ: Извините, я допустил синтаксическую ошибку, поэтому в основном мы можем сделать это следующим образом:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(arg0);

boolean notifStatus = sp.getBoolean ("messages", true);

Этоработает, спасибо: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...