android131 360 04 手机安全页面

## 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>

 

posted @ 2016-01-03 23:46  无天666  阅读(308)  评论(0编辑  收藏  举报