我有一个使用共享偏好的应用。它在活动中运行良好。但是,相同的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;服务。
任何帮助表示感谢。
答案 0 :(得分:0)
getSharedPreferences()
是Context
上的一种方法。您可以在传递到Context
方法的onReceive()
上调用它。