您的位置:首页 > 其它

保存文件到手机内存

2017-07-31 19:58 246 查看


MainActivity.java

package com.example;

import java.util.Map;
import com.example.service.loginService;
import android.support.v7.app.ActionBarActivity;
import android.text.TextUtils;
import android.util.Log;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
private static final String TAG = "MainActivity"; //日志   一般是类名"MainActivity"
private EditText et_username;
private EditText et_password;
private CheckBox cb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_username = (EditText)this.findViewById(R.id.et_username);
et_password = (EditText)this.findViewById(R.id.et_password);
cb = (CheckBox) findViewById(R.id.cb_remember_pwd);
//检查是否有保存的账号及密码   若有回显
Map<String,String> map = loginService.getSavedUserInfo(this);
if(map!=null){
et_password.setText(map.get("password"));
et_username.setText(map.get("username"));
}
}
public void login(View view){
String username = et_username.getText().toString().trim();
String password = et_password.getText().toString().trim();
if(TextUtils.isEmpty(username)||TextUtils.isEmpty(password)){
Toast.makeText(this, "用户名或密码不能为空", 1).show();
}else{
//判断是否保存密码
if(cb.isChecked()){  //如果勾选记住密码
Log.i(TAG, "需要保存用户名密码"); //日志
boolean result = loginService.saveUserInfo(this,username, password);
if(result){
Toast.makeText(this, "保存用户信息成功", 0).show();
}
}
//登录 发送消息到服务器,服务器验证是否成功
if("1477996221".equals(username)&&"666666".equals(password)){
Toast.makeText(this, "登陆成功", 1).show();
}
else{
Toast.makeText(this, "登录失败,账号或密码错误",1).show();
}
}
}
}


/res/layout/activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.MainActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="账号"
/>
<EditText
android:id="@+id/et_username"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码"
/>
<EditText
android:inputType="textPassword" //密码格式
android:id="@+id/et_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>

<RelativeLayout         //线性布局中使用相对布局
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/cb_remember_pwd"
android:checked="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住密码"
/>
<Button
android:onClick="login"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登录"
/>
</RelativeLayout>

</LinearLayout>


loginSrvice.java 右击 原有包 新建一个package(com.example.service)

右击 新建包 新建一个class(loginSrvice)

package com.example.service;    //新建包名

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.net.ContentHandler;
import java.text.BreakIterator;
import java.util.HashMap;
import java.util.Map;

import org.apache.http.entity.InputStreamEntity;

import android.content.Context;

public class loginService {
/*
***保存账号密码的业
af6a
务方法***
* content 上下文
* username 账号
* password 密码
*/
public static boolean saveUserInfo(Context context, String username, String password){
try {
File file = new File(context.getFilesDir(),"Info.txt"); //context.getFilesDir()帮助我们返回一个目录 /date/date/包名/files   "Info.txt"文件名
FileOutputStream fos = new FileOutputStream(file);// 创建输出流对象
fos.write((username+"##"+password).getBytes());// 向文件中写入信息
fos.close();  //关闭输出流对象
return true;   //true保存成功
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;//false 保存失败
}
}
/*
* 获取保存的数据
*/
public static Map<String, String> getSavedUserInfo(Context context){
File file = new File(context.getFilesDir(),"Info.txt");
try{
FileInputStream fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String str = br.readLine();//从这个缓存中读取一行的内容
String[] infos = str.split("##");//split() 方法用于把一个字符串分割成字符串数组。
Map<String, String> map = new HashMap<String, String>();// Map是个接口, HashMap是它的实现类。 这就是new 了一个对象
map.put("username", infos[0]);
map.put("password", infos[1]);
return map;
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}


介绍一下xml的inputtype的值。

Android:inputType=”none”

android:inputType=”text”

android:inputType=”textCapCharacters” 字母大写

android:inputType=”textCapWords” 首字母大写

android:inputType=”textCapSentences” 仅第一个字母大写

android:inputType=”textAutoCorrect” 自动完成

android:inputType=”textAutoComplete” 自动完成

android:inputType=”textMultiLine” 多行输入

android:inputType=”textImeMultiLine” 输入法多行(如果支持)

android:inputType=”textNoSuggestions” 不提示

android:inputType=”textUri” 网址

android:inputType=”textEmailAddress” 电子邮件地址

android:inputType=”textEmailSubject” 邮件主题

android:inputType=”textShortMessage” 短讯

android:inputType=”textLongMessage” 长信息

android:inputType=”textPersonName” 人名

android:inputType=”textPostalAddress” 地址

android:inputType=”textPassword” 密码

android:inputType=”textVisiblePassword” 可见密码

android:inputType=”textWebEditText” 作为网页表单的文本

android:inputType=”textFilter” 文本筛选过滤

android:inputType=”textPhonetic” 拼音输入

android:password=”true” 设置只能输入密码

android:textColor = “#ff8c00” 字体颜色

android:textSize=”20dip” 大小

android:capitalize = “characters” 以大写字母写

android:textAlign=”center” EditText没有这个属性,但TextView有 android:textColorHighlight=”#cccccc” 被选中文字的底色,默认为蓝色

android:textColorHint=”#ffff00” 设置提示信息文字的颜色,默认为灰色

android:textScaleX=”1.5” 控制字与字之间的间距

android:typeface=”monospace” 字型,normal, sans, serif, monospace

android:background=”@null” 空间背景,这里没有,指透明

android:layout_weight=”1” 权重,控制控件之间的地位,在控制控件显示的大小时蛮有用的。

通过EditText的layout xml文件中的相关属性来实现:

1. 密码框属性 android:password=”true” 这条可以让EditText显示的内容自动为星号,输入时内容会在1秒内变成*字样。

2. 纯数字 android:numeric=”true” 这条可以让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入

3. 仅允许 android:capitalize=”cwj1987” 这样仅允许接受输入cwj1987,一般用于密码验证 下面是一些扩展的风格属性

android:editable=”false” 设置EditText不可编辑

android:singleLine=”true” 强制输入的内容在单行

android:ellipsize=”end” 自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: