树懒_移动开学笔记_day21_自定义通知_存储思路

来源:互联网 发布:网络诈骗安全选择题 编辑:程序博客网 时间:2024/06/03 13:41

树懒笔记
day21

android测试:
压力测试:访问次数
请一个猴子
monkey -p <包名> 次数

单元测试:
1.准备一个业务类,编写测试类,继承AndroidTestCase,编写测试方法
1.新建包测试
1.new 一个src
2.new 一个测试类继承AndroidTestCase
3.测试方法
4.发布的时候删除
2.新建项目测试
1.new 一个项目 other中的Android Test Project
2.选择测试的项目
3.
2.在AndroidManifest.xml application节点中添加测试类库

3.在AndroidManifest.xml 设置测试环境

状态:
1.绿条
2.红条
红叉
蓝叉
3.断言
4.获取上下文

通知界面Noitfication编程思路
1.构建通知
Notification.Builder builder = New Notification.Builder(this);
2.设置属性
1.自动取消,当点击了通知内容框,自动取消状态栏中的通知
builder.setAutoCancel(true);
2.设置声音提示/里面还有很多设置如隐藏,明亮。
builder.setDefaluts(Notification.);
3.设置通知图标
builder.setSmallIcon();
4.设置状态栏的滚屏字幕
builder.setTicker(“”);
5.设置通知的时间
builder.setWhen(System.currentTimeMillis());

3.设置通知内容框的内容
1.设置内容框的标题
builder.setContentTitle();
2.设置通知内容框的内容
builder.setContentText();

4.设置内容框的内容意图
例如打电话
1.Intent
2.内容意图,当点击通知内容框,后执行的意图
延迟意图,满足某种条件的意图,当点击了内容框,则执行该意

content:上下文
requestCode:请求码,当前没有使用
intent:意图,当点击内容框要进入的组件
FLAG_UPDATE_CURRENT:更新当前通知状态
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
3.通过构建器来构建通知
Notification notification = builder.build();
4.发通知,在通知管理器中发通知,通过Context取得通知管理器服务
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTICICATION_SERVICE);
5.发通知 id:该通知在通知管理中的序号
notificationManager.notify(1,notification);

5.自定义通知界面…
在通知界面的内容框的内容写自定义通知
1.创建一个自定义布局
2.远程视图,该界面视图不是在本应用中展示,在远程的系统的应用中展示
packageName:当前项目的包名
layoutId:自定义界面布局的资源id
RemoteViews remoteViews = new RemoteViews(getPackageName(),R.layout.xml);
3.设置自定义通知界面的子控件的属性

4.添加布局
builder.setContent(remoteViews);

6.手机内部存储思路:
默认在/data/data/<包名>/files文件夹
当应用卸载时,目录会同步删除
Context.openFileInput
mode:
Context.MODE.PRIVATE 私有权限,私有权限,只有本Android应用可用
Context. MODE_WORLD_READABLE 全局读权限,其他Android应用只可以读取
Context. MODE_WORLD_WRITEABLE 全局写权限,其他Android应用可写
Context. MODE_WORLD_READABLE+ 全局读写全新,其他Android应用可读可写
Context. MODE_WORLD_WRITEABLE

Context. MODE_APPEND 追加模式,在些数据的时候在已有文件后追加写,默认是私有权限只有本应用可读可写

手机外部存储(SD卡)步骤:
Environment.getExternalStorageState() 取得外部存储状态
Environment.getExternalStorageDirectory() 取得外部存储根路径

写入外部存储的权限
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
android.permission.WRITE_EXTERNAL_STORAGE

外存路径描述
取得外部存储的公共共享存储路径
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
在外存中存放应用的私有文件,当应用删除时,该内容会同步删除 :
context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)
目录: /android/data/<包名>/files/<类型>
在外存中存放应用的私有缓存文件 ,当应用删除时,该内容会同步删除
context.getExternalCacheDir()
目录:/android/data/<包名>/cache
取得外存的根路径
Environment.getExternalStorageDirectory()

1.存文件到sdcard中,每一部手机的位置都不一样
写数据到sdcard
1.选判断sdcard是否挂载
2.假如有:获取sdcard路径
3.在sdcard中创建文件,并且开辟输出流
4.写数据到输出流
5.关闭输出流
2.从sdcard读文件
1.判断sdcard状态
2.获取外村的根路径
3.创建文件
4.开辟输入流
5.缓存
ByteArrayOutputStream
6.关闭输入流、缓存

SharedPrefereces
登录实例步骤:
1.准备一个login.xml
2.记住用户帐号
if(mRememberChx.isChecked()){
edit.putString(“username”, account);
try {
//加密
edit.putString(“password”, AESEncryptor.encrypt(SEED, pwd));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
edit.putBoolean(“isChecked”, true);
}else{
edit.putBoolean(“isChecked”, false);
}
edit.commit();//提交数据
}

3.填充数据
private void autoFill() {

if(mSp.getBoolean("isChecked", false)){    //解密    mAccoutEdt.setText(mSp.getString("username", null));    try {        mPwdEdt.setText(AESEncryptor.decrypt(SEED, mSp.getString("password", null)));    } catch (Exception e) {        // TODO Auto-generated catch block        e.printStackTrace();    }    mRememberChx.setChecked(true);}

}

4.登录
public void login(View v){
String account = mAccoutEdt.getText().toString().trim();//用户输入的账号
String pwd = mPwdEdt.getText().toString().trim();//用户输入的密码
//用户名和密码都不能为空,访问网络来验证
if(TextUtils.isEmpty(account)||TextUtils.isEmpty(pwd)){
Toast.makeText(context, “用户名或者密码不能为空”, 0).show();
return;
}
//用户名和密码合法:1.记住密码信息 2.进入到SystemActivity
rememberInfo(account, pwd);
Intent intent = new Intent();
//显示调用
intent.setClass(this, SystemActivity.class);
finish();
}

0 0
原创粉丝点击