• 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) 运行adtsdk	oolsdraw9patch.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>
  • 相关阅读:
    MySQL-MMM方案
    MySQL双主复制
    MySQL主从复制
    Keepalived实现高可用
    CentOS7.2 部署Haproxy 1.7.2
    博客园写随笔时用数学公式
    Java中有三种移位运算符
    VS Code配置C/C++环境
    Visual Studio Code 如何编写运行 C、C++ 程序?
    头一次知道“原地算法”?!
  • 原文地址:https://www.cnblogs.com/yaowen/p/5097512.html
Copyright © 2020-2023  润新知