云安全卫士开发笔记

day01:

写博客之前,首先感谢一下我的一群IT兄弟(高泰的屌丝们),是他们让我有了写下去的动力,为什么楠?从他们身上我看到了我和他们的区别

1:学会Xutils的使用(下载,和IOC的使用)

2:android中的消息机制

        3:包管理器(PackageManager) API的使用

4:android中的动画简单使用

5:自定义对话框的使用

6:应用程序如果希望正确安装做到如下:

包名一致,签名一致(考虑到安全为题)File-->export--->Export android Application ---->项目名称---->keystore的位置---》》》

7:两种上下文的区别:(Activity.this,getApplicationContext())

getApplicationContext():代表整个程序的上下文(活的比较长)

Activity.this     :上下文对象的子类(活的时间比较短):

父类有的东西,子类都有,子类有的,父类不一定有,

比如对话框,其实他是Activity的一部分,他必须要知道挂载在那个activity上,才可以被显示所以:

AlertDialog.Builder builder = new Builder(this);才知道挂载在那个窗口上。一般toast都是getApplicationContext

那么到底什么是上下文::自己理解去吧(其实就是一些对象里面包含一些数据,去做一些操作)

8:怎么样看报错信息;首先看自己的写的包名,一般都是在异常第一行,或者在cause By那边!

Activity就是Context的子类

9:如果实现一个类要写很多的方法那么肯定有//default simple basic base的基础类

10:一般人做android开发都是run as 但是对于一个j2ee的后台来说,肯定是习惯用调试,而不是打logger,其实只要我们打了断点,然后debug as就可以了

1.1 Xutils下载,源码如下:

HttpUtils http = new HttpUtils();
HttpHandler handler1 = http.download(path,Environment
.getExternalStorageDirectory().getAbsolutePath()+ "/xx.apk", new RequestCallBack<File>(){
@Override
public void onLoading(long total, long current, boolean isUploading) {
// TODO Auto-generated method stub
super.onLoading(total, current, isUploading);
int progress = (int) (current * 100 / total);
tv_splash_progress.setText(("下载进度:" + progress + "%"));
}
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
System.out.println(arg0.getStackTrace());
System.out.println("aa"+arg0.getMessage());
Toast.makeText(getApplicationContext(), "下载失败", 0)
.show();
loadMainUI();
}
@Override
public void onSuccess(ResponseInfo<File> arg0) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "下载成功,替换安装", 0)
.show();
// <action android:name="android.intent.action.VIEW" />
// <category
// android:name="android.intent.category.DEFAULT" />
// <data android:scheme="content" />
// <data android:scheme="file" />
// <data
// android:mimeType="application/vnd.android.package-archive"
// />
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
// intent.setType("application/vnd.android.package-archive");
// intent.setData(Uri.fromFile(t));
intent.setDataAndType(Uri.fromFile(arg0.result),
"application/vnd.android.package-archive");
startActivity(intent);
}
});
 

  说明:首先创建HttpUtil 对象,其次调用download的方法三参数衣服分别为(下载地址,下载到本地地址,回调方法),在onsuccess方法里面是更新程序操作,更新之前会先删除老的客户端,然后按照源程序。

1.2注解的使用看两行代码就可以

@ViewInject(R.id.tv_splash_progress)
private TextView tv_splash_progress;

同时在Oncreate里面添加:

ViewUtils.inject(this); //注入view和事件

2:android中的消息机制,其实很复杂的,我这里项目用到的是很简单的,所以就大概记一下:代码如下:

//创建一个消息处理器
private Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case URL_ERROR:
Toast.makeText(getApplicationContext(), "获取更新用心信息失败,错误码"+URL_ERROR, 1).show();
loadMainUI();
break;
case NETWORK_ERROR:
Toast.makeText(getApplicationContext(), "网络不给力啊!"+NETWORK_ERROR, 1).show();
//loadMainUI();
break;
case JSON_ERROR:
Toast.makeText(getApplicationContext(), "获取更新用心信息失败,错误码"+JSON_ERROR, 1).show();
loadMainUI();
break;
case SERVER_CODE_ERROR:
Toast.makeText(getApplicationContext(), "获取更新用心信息失败,错误码"+SERVER_CODE_ERROR, 1).show();
loadMainUI();
break;
case SHOW_UPDATE_DIALOG:
showUpdateDialog();
break;
}
页面之间的跳转:

public void next(View view){
loadActivity(Setup2Activity.class);
//overridePendingTransition(enterAnim, exitAnim);
overridePendingTransition(R.anim.tran_next_in, R.anim.tran_next_out);
}

实现两个 Activity 切换时的动画。在Activity中使用
有两个参数:进入动画和出去的动画。

1、必须在 StartActivity()  或 finish() 之后立即调用。
2、而且在 2.1 以上版本有效
3、手机设置-显示-动画,要开启状态

绑定sim卡

tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);获取TelephoyManager对象

String sim = tm.getSimSerialNumber();// 获取sim卡的唯一串号。

如果sim卡变了,或给安全号码发送短信

SharedPreferences:
SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。
目录为/data/data/<package name>/share_prefs
比如:
SharedPreferences sharedPreferences = getSharedPreferences("wujay", Context.MODE_PRIVATE); //私有数据
第一个参数:文件名,不要加后缀
第二个参数:文件的操作模式(MODE_APPEND: 追加方式存储,MODE_PRIVATE: 私有方式存储,其他应用无法访问)等等
Editor editor = sharedPreferences.edit();//获取编辑器 editor存储对象采用key-value键值对进行存放
editor.putString("name", "wujaycode");
editor.putInt("age", 4);
editor.commit();//提交修改commit()方法提交数据
与之对应的:
得到share对象,通过int i=share.getInt("i",0);
//第二个参数为缺省值,如果preference中不存在该key,将返回缺省值


1、apk中有两种资源文件,使用两种不同的方式进行打开使用。
raw使用InputStream in = getResources().openRawResource(R.raw.test);
asset使用InputStream in = getResources().getAssets().open(fileName);


这些数据只能读取,不能写入。
2、SD卡中的文件使用FileInputStream和FileOutputStream进行文件的操作。
3、存放在数据区(/data/data/..)的文件只能使用openFileOutput和openFileInput进行操作。
注意不能使用FileInputStream和FileOutputStream进行文件的操作。
4、RandomAccess类仅限于文件的操作,不能访问其他IO设备。它可以跳转到文件的任意位置,从当前位置开始读写。


对于一个j2EE程序员来说对ImageView是很陌生的,其实他和TextView是一样的额,他是一个图片控件。

这段代码可以看出activity返回result是在被finish的时候,也就是说调用setResult()方法必须在finish()之前。
那么如果在如下方法中调用setResult()也有可能不会返回成功: onPause(), onStop(), onDestroy(),
因为这些方法调用不一定是在finish之前的,当然在onCreate()就调用setResult肯定是在finish之前的

按BACK键从一个Activity退出来的,一按BACK,android就会自动调用Activity的finish()方法,然后设置resultCode为RESULT_CANCELED,也就不会返回任何数据了 .
解决方法就是在Activity里面捕获按BACK的事件,捕获到之后先setResult,然后自己来调用finish,就搞定了……把BACK事件直接自己给吞了



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值