Android的移动存储之SharedPreferences
搞Android有一段时间了,但是并没写过有关Android的博客,今天给大家介绍一下SharedPreferences。
使用SharedPreferences保存key-value对的步骤如下:
(1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。
(2)使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。
(3)通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。
(4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。
具体的存入和获取操作,我已经把代码贴出来了,你们可以看一下。
1 package org.sharedPreferences.test;
2
3 import android.app.Activity;
4 import android.content.SharedPreferences;
5 import android.os.Bundle;
6 import android.widget.EditText;
7 import android.widget.RadioGroup;
8
9 public class ShaPreTestActivity extends Activity{
10 /** Called when the activity is first created. */
11 private final String PREFERENCES_NAME="survey";
12 private EditText etName;
13 private EditText etAge;
14 private RadioGroup sex;
15
16 @Override
17 public void onCreate(Bundle savedInstanceState) {
18 super.onCreate(savedInstanceState);
19 setContentView(R.layout.main);
20 etName = (EditText)findViewById(R.id.name);
21 etAge = (EditText)findViewById(R.id.age);
22 sex = (RadioGroup)findViewById(R.id.sex);
23
24 SharedPreferences preferences = getSharedPreferences(PREFERENCES_NAME, Activity.MODE_PRIVATE);
25 etName.setText(preferences.getString("name", ""));
26 etAge.setText(preferences.getString("age", ""));
27 sex.check(preferences.getInt("sex", -1));
28 }
29
30 @Override
31 protected void onStop() {
32 //获得SharedPreferences对象
33 SharedPreferences MyPreferences = getSharedPreferences(PREFERENCES_NAME, Activity.MODE_PRIVATE);
34 //获得SharedPreferences.Editor对象
35 SharedPreferences.Editor editor = MyPreferences.edit();
36 //保存组件中的值
37 editor.putString("name", etName.getText().toString());
38 editor.putString("age", etAge.getText().toString());
39 editor.putInt("sex", sex.getCheckedRadioButtonId());
40 //提交保存的结果
41 editor.commit();
42 super.onStop();
43 }
44 }
代码写好后,你运行程序,你会发现,你输入完退出后,当你再次进入该程序的时候,你就会发现,你上次写的东东还在上面,而且是一模一样。
并且你会在data目录下找到一个名字叫survey.xml文件:
然后把它导出来,打开之后的格式以及内容如下所示:
1 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
2 <map>
3 <int name="sex" value="2131034115" />
4 <string name="name">name</string>
5 <string name="age">10</string>
6 </map>
7
从上面的内容可以看出,它是把那些字段都保存到了xml文件中,当你开启这个应用的时候,它会自动的去data下面找到相应的xml并且把相应的数据显示出来。
这是我做的有关SharedPreferences例子,后面我还会介绍一些有关数据库的例子,希望大家继续关注。
如何配置calendar账号呢?
在android4.0 icecream上,google提供了下面几种方式添加一个calendar账号:
1.通过Calendar应用本身,进入Calendar自己的setting,添加Calendar账号。
2.通过Setting --> 账号与同步-->添加一个账号,这个账号是全局的。
3.通过Email,添加一个账号。
4.通过People,添加一个账号。
综上,通过Setting,Email,People添加的账号都会通过GMS同步到CalendarProvider。
注意:
1.账号分为3种,exchange,google,corporation.
2.如果配置账号时使用gmail, 需要选择协议为m.google.com.
在android4.0 icecream上,Calendar提供了3种方式提示用户Event事件到时间响应:
1.Notification.
2.Email.
3.SMS.
但是许多人也许会很迷惑,为什么在手机或者Tablet上就只能看到Notification呢?
其实,这需要你的账号支持,在Calendars表里面有一个字段allowedReminders,这个里面存储了默认支持的
reminder方式,可能是0,1,2,当然如果你的账号是自己添加的可以有例外。你也许对Reminder表里的最后一个字段比较
迷惑,因为它被命名为method,说到这,我想你一定明白为什么要用这样的名字了。
至于何时显示Email和SMS,大家可以去修改代码,至少目前Email和Notification是支持的,SMS还没有实现。可能
google真的是想把网页上Gmail中的Calendar和移动终端上的Calendar做到无缝结合吧。
期待中~