android___文件访问权限
2015-09-02 21:30
441 查看
<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.login.MainActivity" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/user" /> <EditText android:id="@+id/et_username" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="text" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/password" /> <EditText android:id="@+id/et_password" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textPassword" /> <RadioGroup android:id="@+id/radioGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > <RadioButton android:id="@+id/rd_private" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="私有" /> <RadioButton android:id="@+id/rd_readable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="可读" /> <RadioButton android:id="@+id/rd_writeable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="可写" /> <RadioButton android:id="@+id/rd_rewrable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="公开" /> </RadioGroup> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <CheckBox android:id="@+id/cb_remember_pwd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="@string/rempassword" /> <Button android:id="@+id/bt_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:onClick="login" android:text="@string/login" /> </RelativeLayout> </LinearLayout>
MainActivity.java
package com.example.login; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.RadioGroup; import android.widget.Toast; import com.example.login.service.LoginService; public class MainActivity extends Activity { private static final String tag = "MainActivity"; private EditText et_username; private EditText et_password; private CheckBox cb; private RadioGroup rg; @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) this.findViewById(R.id.cb_remember_pwd); rg = (RadioGroup) this.findViewById(R.id.radioGroup); } // 登陆控件 public void login(View view) { String name = et_username.getText().toString().trim(); String pass = et_password.getText().toString().trim(); if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pass)) { Toast.makeText(this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show(); return; } else { // 判断是否保存密码 if (cb.isChecked()) { // 保存用户和密码 Log.i(tag, "需要保存用户名和密码"); boolean result = false; //返回被选中的id int id = rg.getCheckedRadioButtonId(); switch (id) { case R.id.rd_private: LoginService.saveUserInfo(this,name, pass,1); break; case R.id.rd_readable: LoginService.saveUserInfo(this,name, pass,2); break; case R.id.rd_writeable: LoginService.saveUserInfo(this,name, pass,3); break; case R.id.rd_rewrable: LoginService.saveUserInfo(this,name, pass,4); break; } if(result){ Toast.makeText(this, "用户名和密码保存成功", Toast.LENGTH_SHORT).show(); } } // 登陆 发送信息到服务器,服务喊叫验证是否正确 if ("zhangsan".equals(name) && "123".equals(pass)) { Toast.makeText(this, "登陆成功", 0).show(); } else { Toast.makeText(this, "用户名或密码错误", Toast.LENGTH_SHORT).show(); } } } }
LoginService.java
package com.example.login.service; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import android.annotation.SuppressLint; import android.content.Context; /* * * 登录服务 * * * * **/ @SuppressLint("WorldReadableFiles") public class LoginService { /** * 传入一个上下文:Context * 保存用户名和密码的方法 * * return * true:成功 * false:失败 * * mode: * 1:私有 * 2:可读 * 3:可写 * 4:公开 * * */ public static boolean saveUserInfo(Context context ,String username,String password,int mode){ FileOutputStream fos = null; try{ /** * Context.MODE_PRIVATE:私有的方法创建文件 * * * * */ switch (mode) { case 1: fos = context.openFileOutput("private.txt", Context.MODE_PRIVATE); break; case 2: fos = context.openFileOutput("readable.txt", Context.MODE_WORLD_READABLE); break; case 3: fos = context.openFileOutput("writeable.txt", Context.MODE_WORLD_WRITEABLE); break; case 4: fos = context.openFileOutput("public.txt", Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE); break; } //zhangsan###123 fos.write((username+"###"+password).getBytes()); fos.close(); return true; }catch(Exception e){ return false; } } }
相关文章推荐
- Android问题集(七)——TableLayout 中让TableRow中的控件填充满整列
- Android 开发日志——Handler引起内存泄漏
- android___测试Test
- android__常见布局
- Android接口回调,最简单的理解方式
- Android-调用本地方法实现将C进程分支出来即生成系统进程/NDK-JNI开发实例(九)
- android__实践(登陆界面)
- android__实践(电话拨号器)
- android__实践(短信发送器)
- Android studio中JNI-NDK开发打印LOG出现 undefined reference to `__android_log_print' 解决
- Android__基础
- Android小例子:圆角按钮、CheckBox使用、退出确认框、Intent传值、Activity显示软件信息
- Android xmlns 的作用及其自定义
- Android 应用开始界面制作
- Google 发布 Android 性能优化典范
- android CoordinatorLayout使用
- Android内存优化(五)-- 分析内存的使用
- Android内存优化(四)-- 分析内存的使用
- Android内存优化(三)-- 分析内存的使用
- Android内存优化(二)-- 分析内存的使用