## Root权限 ## > 什么是Root权限? Root权限相当于系统管理员权限, 有了root权限,就可以随意修改和删除手机内部的文件. > 一般手机购买之后, 都没有root权限. 厂商考虑到安全性因素,不允许用户或者第三方app删除和修改手机的内部文件,比如data/data下面的文件(当然,sdcard的内容可以随意修改,不需要root权限) > 如何获取root权限?
> 可以用第三方软件,比如刷机大师等. 一键root > 有了Root后可以干嘛?
> 1. 刷机
> 2. 删除手机内置的app
> 3. 访问data/data目录的文件,并进行修改 > 怎么才能知道手机有么有root?
> 1. 刷机大师(小白用户用此方法)
> 2. 查看是否可以访问data/data目录,如果可以,就说明已经root了
> 3. cmd命令行,运行adb shell, 如果显示#,表示已经root, 如果显示$,表示没有root(如果用真机运行,即使root了,也显示$,这时候,运行命令su,可以直接获取管理员权限) ## MD5 ## > 计算字符串或文件的特征码(数字指纹), 不可逆, 因为任何文件或字符串算出来的md5都是32位! > 数据库: 123456->e10adc3949ba59abbe56e057f20f883e
> 654321->e10adsssssssssc394ffffffff0f883ddddddde > 在线破解网站: http://www.cmd5.com/ > 对MD5进行"加盐"处理, 增强安全性
> MD5(password)->MD5(password + 用户昵称 + 用户id...) ## .9.png(9-Patch) 运行adt\sdk\tools\draw9patch.bat即可进行图片的编辑(美工使用)## > 通过黑色边线来描述图片的拉伸情况和填充文字的方式
> 上黑色边线表示图片水平拉伸区域, 左黑色边线表示垂直拉伸区域,2个交叉区域为拉伸的地方。
> 右黑色边线表示垂直填充文字区域, 下黑色边线表示水平填充文字区域,2个交叉区域为填充文字的地方。 ## 状态选择器(selector) ## <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/function_greenbutton_pressed" android:state_pressed="true"/>//按下的图片
<!-- pressed -->
<item android:drawable="@drawable/function_greenbutton_pressed" android:state_focused="true"/>//获取焦点的图片
<!-- focused -->
<item android:drawable="@drawable/function_greenbutton_normal"/>
<!-- default -->//默认图片 </selector> <Button
android:background="@drawable/btn_green_selector"
/>//将选择器设置给Button
手机安全页面:
package com.itheima52.mobilesafe.activity; import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View; import com.itheima52.mobilesafe.R; /**
* 手机防盗页面
*/
public class LostFindActivity extends Activity {
private SharedPreferences mPrefs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPrefs = getSharedPreferences("config", MODE_PRIVATE);
boolean configed = mPrefs.getBoolean("configed", false);// 判断是否进入过设置向导,默认是false。
if (configed) {
setContentView(R.layout.activity_lost_find);
} else {
// 跳转设置向导页
startActivity(new Intent(this, Setup1Activity.class));
finish();
}
} /**
* 重新进入设置向导
*/
public void reEnter(View view) {
startActivity(new Intent(this, Setup1Activity.class));
finish();
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
style="@style/TitleStyle"
android:text="手机防盗" />
<!-- <style name="TitleStyle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">50dp</item>
<item name="android:background">#8866ff00</item>
<item name="android:gravity">center</item>
<item name="android:textColor">@color/black</item>
<item name="android:textSize">22sp</item>
</style> -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
style="@style/ContentStyle"
android:text="安全号码" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true" 位于右边
android:layout_centerVertical="true" 垂直居中
android:layout_marginRight="5dp"
android:text="13812345678"
android:textColor="@color/black"
android:textSize="16sp" />
</RelativeLayout>
<!-- 分割线 -->
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" 水平居中
android:layout_marginTop="5dp"
android:background="@drawable/listview_divider" /> 用background可以自动拉伸,用src只会有图片的大小。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
style="@style/ContentStyle"
android:text="防盗保护是否开启" />
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
android:src="@drawable/lock" />
</RelativeLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:background="@drawable/listview_divider" />
<TextView
style="@style/ContentStyle"
android:layout_width="match_parent"
android:onClick="reEnter"
android:clickable="true" 能够被点击
android:layout_marginRight="5dp"
android:background="@drawable/shape_selector"
android:text="重新进入设置向导" />
<!-- shape_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/gradient_box" android:state_pressed="true"/>
gradient_box.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" > 矩形
圆角矩形4个角地方圆形的半径
<corners android:radius="5dp" /> 渐变,矩形从左到右的颜色变化。
<gradient
android:centerColor="#fff"
android:endColor="#0f0"
android:startColor="#f00" /> 纯色
<solid android:color="#9000" />
边框
<stroke
android:width="1dp"
android:color="#000"
android:dashWidth="5dp" 虚线宽度
android:dashGap="3dp" 虚线的间隔
/> </shape>
<item android:drawable="@android:color/transparent"/> 系统半透明颜色
</selector> -->
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:background="@drawable/listview_divider" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:background="#5000"
android:padding="3dp"
android:text="功能简介"
android:textColor="@color/black"
android:textSize="18sp" />
<TextView
style="@style/ContentStyle"
android:drawableLeft="@android:drawable/star_big_on" 系统的图片,在文字左边
android:gravity="center"
android:text="GPS追踪:#*location*#" />
<TextView
style="@style/ContentStyle"
android:drawableLeft="@android:drawable/star_big_on"
android:gravity="center"
android:text="播放报警音乐:#*alarm*#" />
<TextView
style="@style/ContentStyle"
android:drawableLeft="@android:drawable/star_big_on"
android:gravity="center"
android:text="远程删除数据:#*wipedata*#" />
<TextView
style="@style/ContentStyle"
android:drawableLeft="@android:drawable/star_big_on"
android:gravity="center"
android:text="远程锁屏:#*lockscreen*#" />
</LinearLayout>
设置向导1:
设置向导1:
/**
* 第一个设置向导页
*/
public class Setup1Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup1);
}
// 下一页
public void next(View view) {
startActivity(new Intent(this, Setup2Activity.class));
finish();
//两个界面切换的动画
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);//进入动画和退出动画
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
style="@style/TitleStyle"
android:text="1.欢迎使用手机防盗" />
<TextView
style="@style/ContentStyle"
android:text="您的手机防盗卫士:" />
<TextView
style="@style/ContentStyle"
android:drawableLeft="@android:drawable/star_big_on" 安卓系统自带的图片,图片在文字左边。
android:gravity="center" 居中
android:text="SIM卡变更报警" />
<TextView
style="@style/ContentStyle"
android:drawableLeft="@android:drawable/star_big_on"
android:gravity="center"
android:text="GPS追踪" />
<TextView
style="@style/ContentStyle"
android:drawableLeft="@android:drawable/star_big_on"
android:gravity="center"
android:text="远程销毁数据" />
<TextView
style="@style/ContentStyle"
android:drawableLeft="@android:drawable/star_big_on"
android:gravity="center"
android:text="远程锁屏" />
<!-- 线性布局,横向的小圆形图片 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" 居中
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_online" /> 安卓系统自带的图片
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/setup1" />
<Button style="@style/NextStyle" />
<!-- <style name="NextStyle">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_alignParentBottom">true</item>
<item name="android:layout_alignParentRight">true</item>
<item name="android:background">@drawable/btn_green_selector</item>
//drawable/btn_green_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
3中不同颜色的图片
<item android:drawable="@drawable/function_greenbutton_pressed" android:state_pressed="true"/> 按下
<item android:drawable="@drawable/function_greenbutton_pressed" android:state_focused="true"/> 获取焦点不要也可以
<item android:drawable="@drawable/function_greenbutton_normal"/> 默认
</selector>
<item name="android:drawableRight">@drawable/next</item> Button右边的图片
<item name="android:text">下一步</item>
<item name="android:onClick">next</item>
</style> -->
</RelativeLayout>
</LinearLayout>
设置向导2:
/**
* 第2个设置向导页
*/
public class Setup2Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup2);
}
// 下一页
public void next(View view) {
startActivity(new Intent(this, Setup3Activity.class));
finish();
// 两个界面切换的动画
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);// 页面3进入动画和页面2退出动画
//res/anim/tran_in.xml和tran_out.xml。
//tran_out.xml
/*<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:toXDelta="-100%p" > 因为是从主界面移动到左边,所以y坐标不变,x坐标从0到-百分百P,p是parent父控件
</translate>*/
//tran_in.xml
/*<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="100%p"
android:toXDelta="0" > 因为是从右边进入,所以X坐标从100%的p到0,
</translate>*/
} // 上一页和下一步移动动画的位移是相反的
public void previous(View view) {
startActivity(new Intent(this, Setup1Activity.class));
finish();
// 两个界面切换的动画
overridePendingTransition(R.anim.tran_previous_in,R.anim.tran_previous_out);// 进入动画和退出动画
//tran_previous_in.xml
/*<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500" 持续时间
android:fromXDelta="-100%p"
android:toXDelta="0" >
</translate>*/
//tran_previous_out.xml
/*<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:toXDelta="100%p" >
</translate>*/
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:itheima="http://schemas.android.com/apk/res/com.itheima52.mobilesafe"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
style="@style/TitleStyle"
android:text="2.手机卡绑定" />
<TextView
style="@style/ContentStyle"
android:text="通过绑定SIM卡:" />
<TextView
style="@style/ContentStyle"
android:text="下次重启手机如果发现SIM卡变化" />
<TextView
style="@style/ContentStyle"
android:text="就会发送报警短信" />
<com.itheima52.mobilesafe.view.SettingItemView
android:id="@+id/siv_sim"
android:layout_width="match_parent"
android:layout_height="wrap_content"
itheima:desc_off="sim卡没有绑定"
itheima:desc_on="sim卡已经绑定"
itheima:title="点击绑定sim卡" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_online" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/bind" />
<Button style="@style/NextStyle" />
<Button style="@style/PreviousStyle" />
<!-- <style name="PreviousStyle">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_alignParentBottom">true</item>
<item name="android:layout_alignParentLeft">true</item>
<item name="android:background">@drawable/btn_green_selector</item>
<item name="android:drawableLeft">@drawable/previous</item> Button左边的图片
<item name="android:text">上一步</item>
<item name="android:onClick">previous</item>
</style> -->
</RelativeLayout>
</LinearLayout>
设置向导3:
/**
* 第3个设置向导页
*/
public class Setup3Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup3);
}
// 下一页
public void next(View view) {
startActivity(new Intent(this, Setup4Activity.class));
finish();
// 两个界面切换的动画
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);// 进入动画和退出动画
}
// 上一页
public void previous(View view) {
startActivity(new Intent(this, Setup2Activity.class));
finish();
// 两个界面切换的动画
overridePendingTransition(R.anim.tran_previous_in,
R.anim.tran_previous_out);// 进入动画和退出动画
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:itheima="http://schemas.android.com/apk/res/com.itheima52.mobilesafe"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
style="@style/TitleStyle"
android:text="3.设置安全号码" />
<TextView
style="@style/ContentStyle"
android:text="SIM卡变更后" />
<TextView
style="@style/ContentStyle"
android:text="报警短信会发送给安全号码" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入或选择安全号码" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn_light_green_selector"
android:text="请选择联系人" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_online" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/phone" />
<Button style="@style/NextStyle" />
<Button style="@style/PreviousStyle" />
</RelativeLayout>
</LinearLayout>
设置向导4:
、
public class Setup4Activity extends Activity { private SharedPreferences mPref; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup4);
mPref = getSharedPreferences("config", MODE_PRIVATE);
}
// 下一页
public void next(View view) {
startActivity(new Intent(this, LostFindActivity.class));
finish();
// 两个界面切换的动画
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);// 进入动画和退出动画
mPref.edit().putBoolean("configed", true).commit();// 更新sp,表示已经展示过设置向导了,下次进来就不展示啦
}
// 上一页
public void previous(View view) {
startActivity(new Intent(this, Setup3Activity.class));
finish();
// 两个界面切换的动画
overridePendingTransition(R.anim.tran_previous_in,
R.anim.tran_previous_out);// 进入动画和退出动画
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:itheima="http://schemas.android.com/apk/res/com.itheima52.mobilesafe"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
style="@style/TitleStyle"
android:text="4.恭喜您,设置完成" />
<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="防盗保护没有开启" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_invisible" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/presence_online" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/phone" />
<Button
style="@style/NextStyle"
android:text="设置完成" />
<Button style="@style/PreviousStyle" />
</RelativeLayout>
</LinearLayout>