基础界面的设置

 <EditTextandroid:id="@+id/editText2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ems="10"android:inputType="numberPassword"android:layout_alignParentRight="true"android:layout_alignParentLeft="true"android:hint="请输入用户名"/><Switchandroid:id="@+id/switch1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="是否开启防盗功能"android:layout_below="@id/editText3"android:layout_alignParentRight="true"android:layout_alignParentLeft="true"/><EditTextandroid:id="@+id/editText3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ems="10"android:inputType="numberPassword"android:layout_below="@id/editText2"android:hint="请输入安全号码"android:layout_alignParentLeft="true"android:layout_alignParentRight="true"/><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_marginBottom="0dp"android:orientation="vertical"><Buttonandroid:id="@+id/button"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/editText3"android:layout_alignParentLeft="true"android:onClick="lock"android:text="锁屏" /><Buttonandroid:id="@+id/button2"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:onClick="stopClick"android:text="关闭" /></LinearLayout><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/button3"android:text="" /><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="保存"android:layout_below="@id/switch1"android:layout_alignParentRight="true"android:layout_alignParentLeft="true"android:onClick="readClick"/>

内部相关代码

public class MainActivity extends AppCompatActivity {public static final Object PREF_PHONE_NUMBER = "PREF_PHONE_NUMBER";private Switch switch1;TelephonyManager tm;private EditText editText;private TextView textView;String model = android.os.Build.MODEL;String brand = android.os.Build.BRAND;String device = android.os.Build.DEVICE;String message;StringBuffer sb;StringBuffer sa;ComponentName mAdminName;DevicePolicyManager mDPM;public static final String SP_SAFE_KEY = "SP_SAFE_KEY";public static final String SP_MYNUMBER_KEY = "SP_MYNUMBER_KEY";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);switch1 = findViewById(R.id.switch1);editText = findViewById(R.id.editText2);editText =findViewById(R.id.editText3);textView =findViewById(R.id.textView);mAdminName = new ComponentName(this, MainActivity2.class);mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);//如果设备管理器尚未激活,这里会启动一个激活设备管理器的Intent,具体的表现就是第一次打开程序时,手机会弹出激活设备管理器的提示,激活即可。if (!mDPM.isAdminActive(mAdminName)) {showAdminManagement(mAdminName);}readPrivateFileClick();readSafeClick();switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if (isChecked == true) {Intent intent = new Intent(MainActivity.this, MyService.class);startService(intent);testTelephoneManager();writePrivateFileClick();Toast.makeText(MainActivity.this, "开启防盗", Toast.LENGTH_SHORT).show();if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {// TODO: Consider calling//    ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding//   public void onRequestPermissionsResult(int requestCode, String[] permissions,//                                          int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return;}textView.setText("唯一的设备ID=" + tm.getDeviceId() + "\n" +"手机号=" + tm.getLine1Number() + "\n" +"获取ISO标准的国家码·即国际长途区号=" + tm.getNetworkCountryIso() + "\n" +"当前使用的网络类型=" + tm.getNetworkType() + "\n" +"手机类型=" + tm.getPhoneType() + "\n" +"SIM的状态信息=" + tm.getSimState() + "\n" +"SIM卡的序列号=" + tm.getSimSerialNumber() + "\n" +"服务商名称=" + tm.getSimOperatorName() + "\n" +"型号=" + model + "\n" +"品牌=" + brand + "\n" +"设备名=" + device);
//                    message=tm.getLine1Number();
//                    smsManager();} else {Toast.makeText(MainActivity.this, "关闭防盗", Toast.LENGTH_SHORT).show();Intent intent = new Intent(MainActivity.this, MyService.class);stopService(intent);}}});}//电话服务管理器的API方法public void testTelephoneManager() {tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);System.out.println("电话状态=" + tm.getCallState());if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {return;}//测试来电显示:直接发送一个广播sendBroadcast(new Intent(this, PhoneListenerReceiver.class));
//        tm.listen(new MyPhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);}
//    /**
//     * 电话服务的监听器
//     */private static class MyPhoneStateListener extends PhoneStateListener {@Overridepublic void onCallStateChanged(int state, String phoneNumber) {super.onCallStateChanged(state, phoneNumber);switch (state) {case TelephonyManager.CALL_STATE_RINGING:System.out.println("正在响铃");break;case TelephonyManager.CALL_STATE_IDLE:System.out.println("挂机状态");break;case TelephonyManager.CALL_STATE_OFFHOOK:System.out.println("正在接听电话...");break;}}}//存入SIM卡序列号public void writePrivateFileClick() {try {OutputStream out = openFileOutput("sim.txt", Context.MODE_PRIVATE);if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {// TODO: Consider calling//    ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding//   public void onRequestPermissionsResult(int requestCode, String[] permissions,//                                          int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return;}String info = tm.getSimSerialNumber();byte[] bytes=info.getBytes();out.write(bytes,0,bytes.length);//写入out.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}//读取SIM卡序列号public void readPrivateFileClick(){try {InputStream in=openFileInput("sim.txt");byte[] bytes=new byte[1024];sb=new StringBuffer();int len=-1;while((len=in.read(bytes))!=-1){sb.append(new String(bytes,0,len));}in.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}//存入安全号码public void readClick(View v){try {OutputStream out = openFileOutput("safe.txt", Context.MODE_PRIVATE);if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {// TODO: Consider calling//    ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding//   public void onRequestPermissionsResult(int requestCode, String[] permissions,//                                          int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return;}String info =editText.getText().toString();byte[] bytes=info.getBytes();out.write(bytes,0,bytes.length);//写入out.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}String safe=editText.getText().toString();SPUtils.putValue(MainActivity.this, SP_SAFE_KEY, safe);//存入安全号码SPUtils.putValue(MainActivity.this, SP_MYNUMBER_KEY, sb.toString());//存入SIM卡序列号}//读取安全号码public void readSafeClick(){try {InputStream in=openFileInput("safe.txt");byte[] bytes=new byte[1024];sa=new StringBuffer();int len=-1;while((len=in.read(bytes))!=-1){sa.append(new String(bytes,0,len));}in.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}//锁屏功能public void lock(View v){if (mDPM.isAdminActive(mAdminName)) {mDPM.lockNow();}}private void showAdminManagement(ComponentName mAdminName) {Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "activity device");startActivityForResult(intent,1);}public void stopClick(View view){finish();}
}

广播实现对更改SIM与开机自启的相关设定(每一次开机都会启动一次,将显示其中代码删减可实现不弹出担任可后台运行进行相关的监控)

public class BootBroadcastReceiver extends BroadcastReceiver {public BootBroadcastReceiver(){}String ACTION = "android.intent.action.BOOT_COMPLETED";@Overridepublic void onReceive(Context context, Intent intent) {if (intent .getAction().equals(ACTION)){Intent intent1 =new Intent(context,MainActivity.class);intent1 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);***~~context.startActivity(intent1);~~ ***SharedPreferences sp = context.getSharedPreferences("Test", Context.MODE_PRIVATE);String safenumber = sp.getString("SP_SAFE_KEY", "");TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {// TODO: Consider calling//    ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding//   public void onRequestPermissionsResult(int requestCode, String[] permissions,//                                          int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return;}String nowsim = tm.getSimSerialNumber();String nownum=tm.getLine1Number();String savedsim = sp.getString("SP_MYNUMBER_KEY", "");if (!nowsim.equals(savedsim)) {SmsManager smsManager = SmsManager.getDefault();smsManager.sendTextMessage(safenumber, null, nownum, null, null);}Toast.makeText(context,"重启成功",Toast.LENGTH_SHORT).show();}}
}

服务器端的相关设置

public class MyService extends Service {public MyService() {}@Overridepublic IBinder onBind(Intent intent) {// TODO: Return the communication channel to the service.throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic void onCreate() {super.onCreate();System.out.println("my Service create");}//在该方法中实现服务的核心业务@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {//使用线程完成长时间的工作new Thread(new Runnable() {@Overridepublic void run() {System.out.println("onStartCommand");}}).start();return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {super.onDestroy();System.out.println("my service Destroy");}
}

实现对电话的监听

public class PhoneListenerReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {TelephonyManager tm = (TelephonyManager) context.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);tm.listen(new MyPhoneStateListener(context), PhoneStateListener.LISTEN_CALL_STATE);System.out.println("PhoneListenerReceiver started");}static WindowManager wm=null;private class MyPhoneStateListener extends PhoneStateListener{private Context context;TextView textView =null;public MyPhoneStateListener(Context context){this.context=context;}@Overridepublic void onCallStateChanged(int state, String phoneNumber) {super.onCallStateChanged(state, phoneNumber);if (state == TelephonyManager.CALL_STATE_RINGING){wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);WindowManager.LayoutParams params =new WindowManager.LayoutParams();params.type=WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;params.flags=WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;params.width =WindowManager.LayoutParams.WRAP_CONTENT;params.height=WindowManager.LayoutParams.WRAP_CONTENT;textView =new TextView(context);textView.setText("当前来电号码为:"+phoneNumber);wm.addView(textView,params);}else if (state ==TelephonyManager.CALL_STATE_IDLE){if (wm!=null){wm.removeView(textView);wm =null ;}}}}}

android项目:手机防盗软件相关推荐

  1. 安卓案例分析——实现简单的手机防盗软件

    一周前老师布置了一个任务,要求实现一个简单的手机防盗软件,这东西在好些年前非常流行,几乎每个XX管家都搞了一个这个功能,当然现在也是 时过境迁,其实好多功能已经不太能够实现了. 最近开始试着去画思维导 ...

  2. android企业手机安全软件开发,基于Android的手机安全管理软件的设计与实现毕业论文.doc...

    本资源来源于互联网,版权为原作者所有.若侵犯到您的版权,请提出指正,我们将立即删除. PAGE 2 年年青岛农业大学 毕 业 论 文(设计) 题 目: 基于Android的手机安全管理软件的 设计与实 ...

  3. 智能手机防盗软件测试自学,用谁找回手机几率最大?手机防盗软件功能大PK

    数据显示,目前我国手机用户平均每18个月就会换一次手机,这其中手机丢失占去不小的比例.很多人在手机丢失时都会惊慌失措,不知从何找起,而就是这短暂的慌乱错过了找手机最佳时间.幸好当前通过手机防盗软件寻回 ...

  4. 基于Android的备忘录软件,基于Android的手机备忘录软件设计

    <基于Android的手机备忘录软件设计>由会员分享,可在线阅读,更多相关<基于Android的手机备忘录软件设计(25页珍藏版)>请在皮匠网上搜索. 1.课程设计报告(本科) ...

  5. 分享一个Symbian手机防盗软件源码

    http://download.csdn.net/source/2135024 几年前看到Symbian上流行一种手机防盗软件,一时手痒自己也研做了个,前几天从硬盘旮旯里又找到了,有兴趣的可以下载看看 ...

  6. Android手机防盗软件

    本程序是郑平老师所做,不错的软件入门小项目. 下载地址:http://download.csdn.net/detail/hong0220/4683329 package com.zhengping.l ...

  7. 手机卫士项目——手机防盗GPS追踪技术

    1.个人感想由于随着手机不停的位置移动,手机防盗这款功能  是假设手机在丢失的情况下  要在后台偷偷的运行所以要用到Service服务(四大组件之一) package com.android.mobi ...

  8. android项目 用手机,基于Android平台的手机记账应用开发全程实录|Android项目手机记账应用...

    <基于Android平台的手机记账应用开发全程实录> 百度云链接:http://pan.baidu.com/s/1dFFPWpr 密码: j435 01.项目概述与项目需求 02.数据库设 ...

  9. 手机防盗软件实现(源码)

    <a href="http://blog.csdn.net/xiaoxiao108/archive/2011/04/01/6294067.aspx"></a> ...

最新文章

  1. 京东广告典型源码示例二
  2. 【转】Weblogic的集群
  3. 终于知道10月27-28-29这3天为什么调整了
  4. C++ FAQs 第二版
  5. C++ 对TXT 的串并行读写
  6. CentOS下创建配置RAID1
  7. 在storm中使用定时保存
  8. php ajax base64,jQuery实现文件编码成base64并通过AJAX上传的方法
  9. HDU-2037 今年暑假不AC
  10. 基于SSM的猫头鹰在线视频网站
  11. 网页设计常用色彩搭配表
  12. arcgis创建城市路网
  13. 树莓派+aria2+yaaw搭建下载机
  14. python小明爬楼梯_Python两种方法求解登楼梯问题(京东2016笔试题)
  15. 如何使用Clonezilla克隆Windows硬盘
  16. html meta标签使用总结
  17. simpread-PCB 基本布线规范与设计原则
  18. 看 阿里人的工作生活是怎样的|2017 阿里人影像纪录短片发布
  19. 数据挖掘经典书籍推荐
  20. excel单元格斜杠拆分上下打字

热门文章

  1. 湖南大学21夏训练四13.7,还是7
  2. 《SpringBoot篇》12.@Valid与@Validated的区别
  3. 杰里之配置 DAC 单声道输出,立体声音乐没有合并输出【篇】
  4. 2010国庆活动小记(反思自己)
  5. Fiddler手机抓包工具的使用教程
  6. memset的用法详解
  7. 树形dp day43
  8. 上确界距离公式的推导
  9. Android 图片获取显示照片拍摄时间
  10. 【MySQL学习笔记】系列二:MySQL环境搭建(卸载、下载、安装、配置、登录)