共享首选项在BroadcastReceiver中不起作用

时间:2014-09-01 16:29:02

标签: android broadcastreceiver sharedpreferences

我有一个使用共享偏好的应用。它在活动中运行良好。但是,相同的SharedPreference方法在BroadcastReceiver或Service中不起作用。

示例活动正常:

import android.content.SharedPreferences;

public class SetTelco extends Activity implements OnClickListener, OnItemSelectedListener {

    public static final String Telco="Telco";
    public static String phoneNum;

  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        // An item was selected. You can retrieve the selected item using
        //parent.getItemAtPosition(pos).toString();
        String phoneNum = getResources().getStringArray(R.array.country_short_codes)[parent.getSelectedItemPosition()];
        SharedPreferences telco=getSharedPreferences(Telco,Context.MODE_WORLD_READABLE);
        SharedPreferences.Editor telcoEdit=telco.edit();
        telcoEdit.clear();
        telcoEdit.putString(Telco, phoneNum);
        //Toast.makeText(getApplicationContext(), phoneNum, 5000).show();
        telcoEdit.commit();
    }
}

=========================

BroadcastReceiver示例:

Eclipse给了我一个错误: 此行有多个标记      - 不建议使用Context.MODE_WORLD_READABLE字段      - 对于类型SetAlarms

,方法getSharedPreferences(String,int)未定义
import android.content.SharedPreferences;

public class SetAlarms extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {   
        SharedPreferences telco=getSharedPreferences(Telco,Context.MODE_WORLD_READABLE);
        String phoneNum="Empty";
        phoneNum=telco.getString(Telco,"Empty");
                .
                .
                .
                sms.sendTextMessage(phoneNum, null, sendMsg, null, null);
    }
}

无法弄清楚区别是什么。根据文档,SharedPreferences应该适用于所有组件,活动&amp;服务。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

getSharedPreferences()Context上的一种方法。您可以在传递到Context方法的onReceive()上调用它。

相关问题