转自:http://www.2cto.com/kf/201401/272336.html
我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地就是为了让用户下一次再使用该程序不会重新输入用户名和密码,这里我使用3种方式来存储用户名和密码
1、通过普通 的txt文本存储
2、通过properties属性文件进行存储
3、通过SharedPreferences工具类存储
第一种:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
/** * 保存用户名和密码的业务方法
*
* @param username
* @param password
* @return
*/
public static boolean saveUserInfo(String username, String password) {
try {
// 使用当前项目的绝对路径
File file = new File( "data/data/com.example.android_file_handler/info.txt" );
// 创建输出流对象
FileOutputStream fos = new FileOutputStream(file);
// 向文件中写入信息
fos.write((username + "##" + password).getBytes());
// 关闭输出流对象
fos.close();
return true ;
} catch (Exception e) {
throw new RuntimeException();
}
}
|
这里写的路径是当前项目的绝对路径,这样做是有缺陷的,比如你将项目路径改了,这里的路径就获取就失败了,所以Android提供了通过上下文一个方法获取当前项目的路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public static boolean saveUserInfo(Context context, String username,
String password) {
try {
// 使用Android上下问获取当前项目的路径
File file = new File(context.getFilesDir(), "userinfo.txt" );
// 创建输出流对象
FileOutputStream fos = new FileOutputStream(file);
// 向文件中写入信息
fos.write((username + "##" + password).getBytes());
// 关闭输出流对象
fos.close();
return true ;
} catch (Exception e) {
throw new RuntimeException();
}
}
|
上面这两个方法都是存储用户名和密码,接下来是获取用户名和密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/** * 获取普通txt文件信息
*
* @param context
* @return
*/
public static Map<string, object= "" > getTxtFileInfo(Context context) {
try {
// 创建FIle对象
File file = new File(context.getFilesDir(), "userinfo.txt" );
// 创建FileInputStream对象
FileInputStream fis = new FileInputStream(file);
// 创建BufferedReader对象
BufferedReader br = new BufferedReader( new InputStreamReader(fis));
// 获取文件中的内容
String content = br.readLine();
// 创建Map集合
Map<string, object= "" > map = new HashMap<string, object= "" >();
// 使用保存信息使用的##将内容分割出来
String[] contents = content.split( "##" );
// 保存到map集合中
map.put( "username" , contents[ 0 ]);
map.put( "password" , contents[ 1 ]);
// 关闭流对象
fis.close();
br.close();
return map;
} catch (Exception e) {
e.printStackTrace();
return null ;
}
}</string,></string,></string,>
|
这里我将获取到的内容封装到Map集合中,其实使用普通的txt文本存储用户名和密码是有缺陷的,这里我是通过“##”来分割用户名和密码的,那么如果用户在密码中的字符又包含了“#”这个特殊符号,那么最后在获取时,则获取不倒原来保存的信息,所以个人认为dier中方法就可以解决这个问题
第二种:
使用属性文件保存用户名和密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
/** * 使用属性文件保存用户的信息
*
* @param context 上下文
* @param username 用户名
* @param password 密码
* @return
*/
public static boolean saveProUserInfo(Context context, String username,
String password) {
try {
// 使用Android上下问获取当前项目的路径
File file = new File(context.getFilesDir(), "info.properties" );
// 创建输出流对象
FileOutputStream fos = new FileOutputStream(file);
// 创建属性文件对象
Properties pro = new Properties();
// 设置用户名或密码
pro.setProperty( "username" , username);
pro.setProperty( "password" , password);
// 保存文件
pro.store(fos, "info.properties" );
// 关闭输出流对象
fos.close();
return true ;
} catch (Exception e) {
throw new RuntimeException();
}
}
|
读取属性文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/** * 返回属性文件对象
*
* @param context 上下文
* @return
*/
public static Properties getProObject(Context context) {
try {
// 创建File对象
File file = new File(context.getFilesDir(), "info.properties" );
// 创建FileIutputStream 对象
FileInputStream fis = new FileInputStream(file);
// 创建属性对象
Properties pro = new Properties();
// 加载文件
pro.load(fis);
// 关闭输入流对象
fis.close();
return pro;
} catch (Exception e) {
e.printStackTrace();
return null ;
}
}
|
在主方法中调用即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// 获取属性文件对象 Properties pro=LoginService.readSDCard( this );
// 获取用户名或密码
if ( null != pro) {
String username=pro.getProperty( "username" );
String password=pro.getProperty( "password" );
// 如果获取到的用户名或密码不为空,则设置到文本框中
if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)) {
// 设置用户名
etUsername.setText(username);
// 设置密码
etPassword.setText(password);
}
}
|
第三种:
使用SharedPreferences保存用户名和密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/** * 使用SharedPreferences保存用户登录信息
* @param context
* @param username
* @param password
*/
public static void saveLoginInfo(Context context,String username,String password){
//获取SharedPreferences对象
SharedPreferences sharedPre=context.getSharedPreferences( "config" , context.MODE_PRIVATE);
//获取Editor对象
Editor editor=sharedPre.edit();
//设置参数
editor.putString( "username" , username);
editor.putString( "password" , password);
//提交
editor.commit();
}
|
在主方法中读取:
1
2
3
|
SharedPreferences sharedPre=getSharedPreferences( "config" , MODE_PRIVATE);
String username=sharedPre.getString( "username" , "" );
String password=sharedPre.getString( "password" , "" );
|
使用普通txt文件与属性文件保存都是保存到内部存储设备中,我们也可以保存的SDCard中,使用Android提供的Environment类就可以获取到外部存储设备
1
|
File file= new File(Environment.getExternalStorageDirectory(), "info.properties" );
|
如果要使用绝对路径
1
|
File file = new File( "/sdcard/info.properties" );
|
最后就是需要添加权限,因为获取外部存储设备是有关安全的,所以需要添加相关的权限
1
|
<uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission>
|
使用这几种方法就可以实现保存用户名和密码这个功能了,至于有没有其他的方法,我想这几种应该就够用了
相关推荐
这个demo是Android实现记住用户名和密码的例子,程序可以运行
android 用户名和密码的保存demo
最近Android项目需要一个自动登录功能,完成之后,特总结一下,此功能依靠SharedPreferences进行实现。 SharedPreferences简介 ...SharedPreferences使用实例:记住用户名密码自动登录 大致了解了SharedPre
保存用户名密码小实例 SharedPreferences sp = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences是Android提供的一个轻量级存储类,经常用于保存软件设置参数。存放的格式为xml,文件存放在 /data/data/<package name>/shared_prefs下。
利用SharedPrefrences记住登录账户和密码
Android登录界面的简单实现(包含在内外存储卡存储用户名&密码)
Android登录记住密码功能,其中用户名和密码用SharedPreferences方式保存。 密码用AES算法加密保存。
android studio实现文件存储和sharedPreference存储,以QQ登陆为例,将登录的用户名和密码保存到后台,有2种方式
1、 根据所给界面1完成登入功能,用户名为admin,密码为123456,如果用户名和密码不是admin和123456,则使用Toast提示“用户名或密码错误”,如果是则在checkbox选中的情况下,将用户名和密码保存,当此Activity再次...
比如在登录界面验证,需要将用户名和密码通过SharedPreferences方式保存,注册信息的时候需要通过网络将数据存储到后台数据库中。结合一个登录界面的验证,使用SharedPreferences接口将数据存储在本地的文件中,实现...
这段源码直接使用SharedPreferences类。就可以达到保存用户名和密码的功能,代码很短,很容易读懂。移植性很好。
由于在网上木有搜索到怎么获取wifi热点的用户名和密码,只好自己动手,本demo包含获取wifi热点的用户名、密码、mac、ip等,拿出来分享下(亲测android4.4可用)!欢迎下载。
在进行APP+H5混合开发的时候...这种情况在Android开发中比较常见,因为Android不会自动同步cookie到WebView。做iOS开发则不用担心这个问题,因为iOS内部已经实现了cookie同步.本文就是一个小的事例,从登录到同步cookie
程序运行显示一个登陆框,用户名输入admin,密码输入123456会提示登录成功,如果不是则提示不正确,如果勾选保存用户名,在下一个程序打开时,用户名会自动读取并显示。 1.activity_main.xml页面存放所有的控件,我...
用户可以通过勾选“记住密码”将用户名和密码保存起来,下次启动直接显示用户名和密码。 4、清空输入数据功能。 用户可以点击相应按钮将已输入的信息清空,该项功能在用户登录界面、用户注册界面、添加备忘录界面均...
使用SharedPreferences保存用户名和密码的方法,并且存在一个CheckBox复选框可以用以保存密码。记录小功能(登录界面记住密码)模块,具体内容可以观看2023-5-7的两篇文章。如果开发者有一点开发基础,可以直接通过...
用户完成注册后返回主界面,并将用户名和密码填写在用户名和密码输入框中。 (3)单击登录弹出对话框,对话框中显示“登录成功!”信息,并包含一个确定按钮,单击该按钮关闭对话框,并退出应用程序。
本登录对话框,用户名和密码保存在sqlite中,登录时从数据库匹配用户名和密码