Android中四种数据存储方式,
Shared Preferences主要是以键值对的形式来存储数据,他仅仅是轻量级存储机制,主要实现android比较简单参数的设置。这里主要利用其中一种即Shared
Preferenced来实现本地用户登录,下面是效果图:
这时我们可以设置用户名和密码。
然后,当我们下次在打开软件的时候,即出现下面登录的效果:
点击确定之后我们就可以进入下一层显示。Shared Preference主要是以getPreference()方法获取对象,然后再通过Editor来设置里面键值对形式的参数,最后再通过commit方法来提交保存这些数据,这些数据无法共享,即无法直接在多个程序间共享Preference数据。下面是上面效果的主要源码:
public class MainActivity extends Activity {
private AlertDialog setPrefernAlertDialog;
private AlertDialog showPasswordDialog;
private boolean isFirst;
//保存数据 专用
private SharedPreferences sp;
private EditText safenumber;
private TelephonyManager tm;
private Button start_button,modify_button;
private boolean isStart;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sp=this.getSharedPreferences("data",MODE_WORLD_READABLE);
//主要以键值对的形式取出
isFirst=sp.getBoolean("first", true);
//若值没设置 则开始设置密码一类
if (isFirst)
{
showSetPasswordDialog();
return;
}else {
showInputPasswordDialog();
}
}
public void init()
{
setContentView(R.layout.activity_main);
}
//第一次使用 创建弹出输入密码对话框 属于dialog的基本操作
private void showSetPasswordDialog()
{
AlertDialog.Builder builder=new AlertDialog.Builder(this);
//给Dialog设置View 从XML文件转换而来 这是属于基本操作
LayoutInflater inflater=LayoutInflater.from(this);
View view= inflater.inflate(R.layout.show_password_dialog,null);
final EditText username =(EditText)view.findViewById(R.id.username);
final EditText userpassword=(EditText)view.findViewById(R.id.password);
Button ok=(Button)view.findViewById(R.id.ok);
Button cancle=(Button)view.findViewById(R.id.cancle);
//设置动作
ok.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
String name=username.getText().toString();
String password=userpassword.getText().toString();
//设置密码时 判断两者不能为空
if(name.trim().equals("") || password.trim().equals("")) {
Toast.makeText(MainActivity.this, "用户名和密码不能为空", Toast.LENGTH_LONG).show();
return;
}
//sharedpreferences的基本操作 以键值对的形式保存到data文件中
Editor editor=sp.edit();
editor.putString("name",name);
editor.putString("password",password);
editor.putBoolean("first", false);
//提交保存到生成的XML文件中
editor.commit();
setPrefernAlertDialog.dismiss();
init();
}
});
cancle.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
//这里注意要消去 对话框 再finish掉Activity 否则 有bug
if (isFirst)
{
setPrefernAlertDialog.dismiss();
MainActivity.this.finish();
}
setPrefernAlertDialog.dismiss();
}
});
builder.setTitle("请设置密码");
builder.setView(view);
setPrefernAlertDialog=builder.create();
setPrefernAlertDialog.show();
}
/*
* 当不是第一次操作,即已经设置完密码之后的操作
*/
public void showInputPasswordDialog()
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.show_password_dialog, null);
final EditText et_username = (EditText) view.findViewById(R.id.username);
final EditText et_password = (EditText) view.findViewById(R.id.password);
Button btn_ok = (Button) view.findViewById(R.id.ok);
Button btn_cancle = (Button) view.findViewById(R.id.cancle);
btn_ok.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String name = et_username.getText().toString();
String password = et_password.getText().toString();
if(name.trim().equals("") || password.trim().equals("")) {
Toast.makeText(MainActivity.this, "用户名和密码不能为空", Toast.LENGTH_LONG).show();
return;
}
//获取保存文件中的用户名和密码
String savedUsername = sp.getString("name", "");
String savedPassword = sp.getString("password", "");
//查看输入的密码和名字是否一致
if(name.trim().equals(savedUsername) && password.trim().equals(savedPassword)) {
init();
showPasswordDialog.dismiss();
} else {
Toast.makeText(MainActivity.this, "用户名或者密码错误", Toast.LENGTH_LONG).show();
return;
}
}});
//下面属于基本的操作
btn_cancle.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showPasswordDialog.dismiss();
MainActivity.this.finish();
}});
builder.setTitle("输入密码");
builder.setView(view);
showPasswordDialog = builder.create();
showPasswordDialog.show();
}
}
上面最基本的一些含义已经注释了,记住一点就是这点:
//这里注意要先消去对话框 再finish掉Activity 否则 有bug
if (isFirst)
{ setPrefernAlertDialog.dismiss();
MainActivity.this.finish(); }
下面是show_password_dialog.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/username"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名 :"
/>
<EditText
android:id="@+id/password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:password="true"
android:hint="请输入用户密码:"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ok"
android:layout_weight="1"
android:textSize="20sp"
android:textColor="@color/purple"
/>
<Button
android:id="@+id/cancle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancle"
android:layout_weight="1"
android:textSize="20sp"
android:textColor="@color/purple"
/>
</LinearLayout>
</LinearLayout>
分享到:
相关推荐
利用SharedPreferences 在2个不同的Activity传递数据 可以用做保存帐号的登录信息
Android 使用Shared Preferences进行数据存储-样例,演示如何使用 Shared Preferences 获得数据和保存数据、如何使用getPreferences方法创建文件的模式,以及如何使用getPreferences模拟用户参数设置、查看 ...
Shared Preferences是Android平台上的一个轻量级的数据存储类,用于保存和读取应用程序的一些常用配置和数据,比如用户设置的参数、游戏分数、应用程序状态等。Shared Preferences类似于Windows中的INI文件,它允许...
FastSave is An Android library for fast and easy access to Android Shared preferences. It allows you to save any type or list in the sharedpreferences and retrieve it in convenient way. Installation ...
streaming_shared_preferences Flutter项目的React式键值存储。 Streaming_shared_preferences在之上添加了响应式功能。 它可以执行常规SharedPreferences所做的所有事情,但也可以侦听value的变化。 这样可以非常...
NULL 博文链接:https://chaowen0668.iteye.com/blog/1026432
Android Shared Preferences Helper Android Library to handle SharedPreferences boilerplate code and other tools Download dependencies { compile 'com.github.seanzor:shared-preferences-helper:1.1.0' }...
NULL 博文链接:https://byandby.iteye.com/blog/833292
Android:利用SharedPreferences实现自动登录
preferences
安卓 数据存储 Preferences
android设置一些常用的属性,如ip地址和端口号什么,都是可以用android的Preferences来设置,简单方便。
本示例通过 Preferences 创建、删除、更新和查询应用程序偏好数据,主要实现了登录页面偏好数据存取及主页面背景色偏好数据存取。 说明: 启动页面勾选不再显示,保存该偏好数据,下次启动应用不再显示该页面,直接...
Use a single object : Preferences in your kotlin shared projects Compatible with kotlin android and kotlin native for iphone class MyPresenter { val preferences = Preferences() fun start(){ ...
Tutorial Android Preferences
Android共享首选项演示版2020年Spring 共享首选项演示项目
用SharedPreferences实现登录时记住密码功能,注释清晰,代码简单。用好了请作出评价,谢谢!
Rx Preferences Reactive SharedPreferences for Android. Usage Create an RxSharedPreferences instance which wraps a SharedPreferences: SharedPreferences preferences = PreferenceManager....
This is Android Shared preference wrapper that encrypts the values of Shared Preferences using AES 128, CBC, and PKCS5 padding with integrity checking in the form of a SHA 256 hash. Each key is stored...
如果你安装了Pydev for Eclipse,导入这个专门为Eclipse for python打造的配置文件,两个字,牛逼