├── .gitignore ├── .idea ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── libraries │ ├── RootTools_2_4.xml │ ├── animated_vector_drawable_25_3_1.xml │ ├── appcompat_v7_25_3_1.xml │ ├── espresso_core_2_2_2.xml │ ├── espresso_idling_resource_2_2_2.xml │ ├── exposed_instrumentation_api_publish_0_5.xml │ ├── hamcrest_core_1_3.xml │ ├── hamcrest_integration_1_3.xml │ ├── hamcrest_library_1_3.xml │ ├── javawriter_2_1_1.xml │ ├── javax_annotation_api_1_2.xml │ ├── javax_inject_1.xml │ ├── jsr305_2_0_1.xml │ ├── junit_4_12.xml │ ├── rules_0_5.xml │ ├── runner_0_5.xml │ ├── support_annotations_25_3_1.xml │ ├── support_compat_25_3_1.xml │ ├── support_core_ui_25_3_1.xml │ ├── support_core_utils_25_3_1.xml │ ├── support_fragment_25_3_1.xml │ ├── support_media_compat_25_3_1.xml │ ├── support_v4_25_3_1.xml │ ├── support_vector_drawable_25_3_1.xml │ └── xutils_3_5_0.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── libs │ └── RootTools-2.4.jar ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── example │ │ └── yuemosafe │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── aidl │ │ ├── android │ │ │ └── content │ │ │ │ └── pm │ │ │ │ ├── IPackageDataObserver.aidl │ │ │ │ ├── IPackageStatsObserver.aidl │ │ │ │ └── PackageStats.aidl │ │ └── com │ │ │ └── android │ │ │ └── internal │ │ │ └── telephony │ │ │ └── ITelephony.aidl │ ├── assets │ │ ├── address.db │ │ └── antivirus.db │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── yuemosafe │ │ │ └── activity │ │ │ ├── advancedtools │ │ │ ├── AdvancedToolsActivity.java │ │ │ ├── AppLockActivity.java │ │ │ ├── EnterPswActivity.java │ │ │ ├── NumBelongtoActivity.java │ │ │ ├── SMSBackupActivity.java │ │ │ ├── SMSReducitionActivity.java │ │ │ ├── adapter │ │ │ │ └── AppLockAdapter.java │ │ │ ├── bean │ │ │ │ ├── AppInfo.java │ │ │ │ └── SmsInfo.java │ │ │ ├── dao │ │ │ │ ├── AppLockDao.java │ │ │ │ └── NumBelongtoDao.java │ │ │ ├── db │ │ │ │ └── AppLockOpenHelper.java │ │ │ ├── fragment │ │ │ │ ├── AppLockFragment.java │ │ │ │ └── AppUnLockFragment.java │ │ │ ├── service │ │ │ │ └── AppLockService.java │ │ │ ├── utils │ │ │ │ ├── AppInfoParser.java │ │ │ │ ├── Crypto.java │ │ │ │ ├── DensityUtil.java │ │ │ │ ├── SmsBackUpUtils.java │ │ │ │ ├── SmsReducitionUtils.java │ │ │ │ └── UIUtils.java │ │ │ └── widget │ │ │ │ ├── AdvancedToolsView.java │ │ │ │ └── MyCircleProgress.java │ │ │ ├── appmanager │ │ │ ├── AppManagerActivity.java │ │ │ ├── adapter │ │ │ │ └── AppManagerAdapter.java │ │ │ ├── bean │ │ │ │ └── AppInfo.java │ │ │ └── utils │ │ │ │ ├── AppInfoParser.java │ │ │ │ ├── DensityUtil.java │ │ │ │ └── EngineUtils.java │ │ │ ├── cacheclear │ │ │ ├── CacheClearListActivity.java │ │ │ ├── CleanCacheActivity.java │ │ │ ├── adapter │ │ │ │ └── CacheCleanAdapter.java │ │ │ └── bean │ │ │ │ └── CacheInfo.java │ │ │ ├── lost │ │ │ ├── BaseSetUpActivity.java │ │ │ ├── ContactSelectActivity.java │ │ │ ├── InterPasswordDialog.java │ │ │ ├── LostFindActivity.java │ │ │ ├── SetUp1Activity.java │ │ │ ├── SetUp2Activity.java │ │ │ ├── SetUp3Activity.java │ │ │ ├── SetUp4Activity.java │ │ │ ├── SetUpPasswordDialog.java │ │ │ ├── adapter │ │ │ │ ├── ContactAdapter.java │ │ │ │ └── HomeAdapter.java │ │ │ ├── bean │ │ │ │ ├── ContactInfo.java │ │ │ │ ├── ContactInfoParser.java │ │ │ │ └── VersionEntity.java │ │ │ ├── broadcastreceiver │ │ │ │ └── SmsLostFindReceiver.java │ │ │ ├── service │ │ │ │ ├── AlarmService.java │ │ │ │ ├── GPSLocationService.java │ │ │ │ └── MyDeviceAdminReciever.java │ │ │ └── utils │ │ │ │ ├── AsyncDownloadApk.java │ │ │ │ ├── GlobalValue.java │ │ │ │ ├── MD5Utils.java │ │ │ │ ├── MyUtils.java │ │ │ │ ├── SpUtils.java │ │ │ │ └── VersionUpdateUtils.java │ │ │ ├── main │ │ │ ├── HomeActivity.java │ │ │ ├── MyApplication.java │ │ │ └── SplashActivity.java │ │ │ ├── progressmanager │ │ │ ├── ProcessManagerActivity.java │ │ │ ├── ProcessManagerSettingActivity.java │ │ │ ├── adapter │ │ │ │ └── ProcessManagerAdapter.java │ │ │ ├── bean │ │ │ │ ├── TaskInfo.java │ │ │ │ └── TaskInfoParser.java │ │ │ ├── service │ │ │ │ └── AutoKillProcessService.java │ │ │ └── utils │ │ │ │ └── SystemInfoUtils.java │ │ │ ├── scanvirus │ │ │ ├── VirusScanActivity.java │ │ │ ├── VirusScanSpeedActivity.java │ │ │ ├── adapter │ │ │ │ └── ScanVirusAdapter.java │ │ │ ├── bean │ │ │ │ └── ScanAppInfo.java │ │ │ ├── dao │ │ │ │ └── AntiVirusDao.java │ │ │ └── utils │ │ │ │ └── MD5Utils.java │ │ │ ├── securityphone │ │ │ ├── AddBlackNumberActivity.java │ │ │ ├── ContactSelectActivity.java │ │ │ ├── SecurityPhoneActivity.java │ │ │ ├── adapter │ │ │ │ ├── BlackContactAdapter.java │ │ │ │ └── ContactAdapter.java │ │ │ ├── bean │ │ │ │ ├── BlackContactInfo.java │ │ │ │ └── ContactInfo.java │ │ │ ├── dao │ │ │ │ └── BlackNumberDao.java │ │ │ ├── db │ │ │ │ └── BlackNumberOpenHelper.java │ │ │ ├── receiver │ │ │ │ ├── InterceptCallReciever.java │ │ │ │ └── InterceptSmsReciever.java │ │ │ └── utils │ │ │ │ └── ContactInfoParser.java │ │ │ ├── settings │ │ │ ├── SettingsActivity.java │ │ │ ├── utils │ │ │ │ └── SystemInfoUtils.java │ │ │ └── widget │ │ │ │ └── SettingView.java │ │ │ └── trafficmonitoring │ │ │ ├── OperatorSetActivity.java │ │ │ ├── TrafficMonitoringActivity.java │ │ │ ├── dao │ │ │ └── TrafficDao.java │ │ │ ├── db │ │ │ └── TrafficOpenHelper.java │ │ │ ├── receiver │ │ │ └── BootCompleteReciever.java │ │ │ ├── service │ │ │ └── TrafficMonitoringService.java │ │ │ └── utils │ │ │ └── SystemInfoUtils.java │ └── res │ │ ├── anim │ │ ├── cycle_7.xml │ │ ├── next_in.xml │ │ ├── next_out.xml │ │ ├── pre_in.xml │ │ ├── pre_out.xml │ │ └── shake.xml │ │ ├── drawable-hdpi │ │ ├── add.png │ │ ├── add_blackname_btn_n.png │ │ ├── add_blackname_btn_p.png │ │ ├── add_btn_n.png │ │ ├── add_btn_p.png │ │ ├── add_fromcontact_n.png │ │ ├── add_fromcontact_p.png │ │ ├── app.png │ │ ├── applock_icon.png │ │ ├── appunlock_icon.png │ │ ├── arrow_right.png │ │ ├── atools.png │ │ ├── back.png │ │ ├── bg_home.png │ │ ├── blue_right_icon.png │ │ ├── brightpurple_checkbox_c.png │ │ ├── brightpurple_contact_icon.png │ │ ├── broom_center.png │ │ ├── broom_left.png │ │ ├── broom_right.png │ │ ├── btn_search_numbelongto_n.png │ │ ├── btn_search_numbelongto_p.png │ │ ├── cacheclean_trashbin_close_icon.png │ │ ├── cacheclean_trashbin_open_icon.png │ │ ├── cachescan_righticon.png │ │ ├── callmsgsafe.png │ │ ├── cancle_scan_n.png │ │ ├── cancle_scan_p.png │ │ ├── checkbox_n.png │ │ ├── clean_all_e.png │ │ ├── clean_all_n.png │ │ ├── clean_all_p.png │ │ ├── clean_process_btn_n.png │ │ ├── clean_process_btn_p.png │ │ ├── cleancache_finish.png │ │ ├── coner_white_rec.png │ │ ├── contact_et_left_icon.png │ │ ├── contact_icon.png │ │ ├── correction_flow_n.png │ │ ├── correction_flow_p.png │ │ ├── delete_data.png │ │ ├── delete_data_small.png │ │ ├── delete_icon.png │ │ ├── deleteicon_yellow_n.png │ │ ├── enterpsw_icon.png │ │ ├── finish_cleancache_n.png │ │ ├── finish_cleancache_p.png │ │ ├── go_greenicon.png │ │ ├── green_checkbox_c.png │ │ ├── green_troggle_c.png │ │ ├── ic_default.png │ │ ├── inverse_btn_n.png │ │ ├── inverse_btn_p.png │ │ ├── launch_bg.jpg │ │ ├── location_icon.png │ │ ├── location_icon_small.png │ │ ├── lock_screen_icon.png │ │ ├── lock_screen_icon_small.png │ │ ├── netmanager.png │ │ ├── no_blacknumbericon.png │ │ ├── numbelongto_et_bg.png │ │ ├── numbelongtoicon.png │ │ ├── numofbelongto.png │ │ ├── operator_finish_n.png │ │ ├── operator_finish_p.png │ │ ├── operator_set_info_incon.png │ │ ├── operator_spinner_bg.png │ │ ├── phoneicon_yellow_n.png │ │ ├── processmanager_setting_icon.png │ │ ├── processmanager_showsysapps.png │ │ ├── processmanagerlockscreen_icon.png │ │ ├── programoflock.png │ │ ├── quickscan_icon.png │ │ ├── restart_scan_btn.png │ │ ├── right_arrows_red.png │ │ ├── rightarrow_blue.png │ │ ├── safe.png │ │ ├── scan_complete.png │ │ ├── scanning_icon.png │ │ ├── security_phone.png │ │ ├── select_all_btn_n.png │ │ ├── select_all_btn_p.png │ │ ├── settingicon_yellow_n.png │ │ ├── settings.png │ │ ├── shareicon_yellow_n.png │ │ ├── sim_alarm_icon.png │ │ ├── sim_alarm_icon_small.png │ │ ├── slide_view.png │ │ ├── sms_backup.png │ │ ├── sms_reduction.png │ │ ├── smsbackup_button_bg.png │ │ ├── switch_btn_off.png │ │ ├── swtch_btn_on.png │ │ ├── sysoptimize.png │ │ ├── taskmanager.png │ │ ├── toggle_btn_blue_p.png │ │ ├── traffic_green.png │ │ ├── traffic_red.png │ │ ├── trojan.png │ │ └── virusscan_icon.png │ │ ├── drawable │ │ ├── add_blacknumber_btn_selector.xml │ │ ├── add_btn_selector_securityphone.xml │ │ ├── add_fromcontact_btn_selector_securityphone.xml │ │ ├── broom_animation.xml │ │ ├── btn_numaddressbg_selector.xml │ │ ├── cacheclean_trash_bin_animation.xml │ │ ├── cancle_scan_btn_selector.xml │ │ ├── checkbox_selector.xml │ │ ├── circle_purple.xml │ │ ├── circle_purple_bg_selector.xml │ │ ├── circle_white.xml │ │ ├── cleancache_btn_selector.xml │ │ ├── cleanprocess_btn_selector.xml │ │ ├── coner_bg_white.xml │ │ ├── correction_flow_btn_selector.xml │ │ ├── edit_normal.9.png │ │ ├── finish_cleancache_selector.xml │ │ ├── green_checkbox_selector.xml │ │ ├── inverse_btn_selector.xml │ │ ├── operator_finish_bg_selector.xml │ │ ├── recomand_icon.9.png │ │ ├── round_purple_tv_bg.xml │ │ ├── security_phone_setup1.9.png │ │ ├── select_all_btn_selector.xml │ │ ├── set_safephone_icon.9.png │ │ ├── setup_setting_complete.9.png │ │ ├── sim_bind_selector.xml │ │ ├── sim_setup.9.png │ │ ├── superman.9.png │ │ ├── toggle_btn_bg_selector.xml │ │ ├── toggle_btn_blue_selector.xml │ │ ├── toggle_btn_green_selector.xml │ │ ├── traffic_green_bg.xml │ │ └── traffic_reminder_selector.xml │ │ ├── layout │ │ ├── activity_add_black_number.xml │ │ ├── activity_add_blacknumber.xml │ │ ├── activity_advanced_tools.xml │ │ ├── activity_app_lock.xml │ │ ├── activity_app_manager.xml │ │ ├── activity_cache_clear_list.xml │ │ ├── activity_clean_cache.xml │ │ ├── activity_contact_list.xml │ │ ├── activity_contact_select.xml │ │ ├── activity_contact_select2.xml │ │ ├── activity_enter_psw.xml │ │ ├── activity_home.xml │ │ ├── activity_lostfind.xml │ │ ├── activity_num_belongto.xml │ │ ├── activity_operator_set.xml │ │ ├── activity_process_manager.xml │ │ ├── activity_process_manager_setting.xml │ │ ├── activity_security_phone.xml │ │ ├── activity_securityphone.xml │ │ ├── activity_settings.xml │ │ ├── activity_setup1.xml │ │ ├── activity_setup2.xml │ │ ├── activity_setup3.xml │ │ ├── activity_setup4.xml │ │ ├── activity_smsbackup.xml │ │ ├── activity_smsreducition.xml │ │ ├── activity_splash.xml │ │ ├── activity_traffic_monitoring.xml │ │ ├── activity_virus_scan.xml │ │ ├── activity_virus_scan_speed.xml │ │ ├── fragment_applock.xml │ │ ├── fragment_appunlock.xml │ │ ├── inter_password_dialog.xml │ │ ├── item_appmanager_list.xml │ │ ├── item_cacheclean_list.xml │ │ ├── item_home.xml │ │ ├── item_list_applock.xml │ │ ├── item_list_blackcontact.xml │ │ ├── item_list_contact_select.xml │ │ ├── item_processmanager_list.xml │ │ ├── item_spinner_operatorset.xml │ │ ├── setup_password_dialog.xml │ │ ├── setup_radiogroup.xml │ │ ├── titlebar.xml │ │ ├── toggle_btn_blue_selector.xml │ │ ├── ui_advancedtools_view.xml │ │ └── ui_settings_view.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── raw │ │ └── shimian.mp3 │ │ ├── values-w820dp │ │ └── dimens.xml │ │ ├── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ └── device_admin_sample.xml │ └── test │ └── java │ └── com │ └── example │ └── yuemosafe │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── 使用前必读readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # Intellij 36 | *.iml 37 | .idea/workspace.xml 38 | 39 | # Keystore files 40 | *.jks 41 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/libraries/RootTools_2_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/animated_vector_drawable_25_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/appcompat_v7_25_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/espresso_core_2_2_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/espresso_idling_resource_2_2_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/exposed_instrumentation_api_publish_0_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/hamcrest_integration_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/hamcrest_library_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/javawriter_2_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/javax_annotation_api_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/javax_inject_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/jsr305_2_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/junit_4_12.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/rules_0_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/runner_0_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/support_annotations_25_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/support_compat_25_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/support_core_ui_25_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/support_core_utils_25_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/support_fragment_25_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/support_media_compat_25_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/support_v4_25_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/support_vector_drawable_25_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/xutils_3_5_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # second_yuemosafe 2 | 高仿360手机卫士,金山手机卫士等手机安全维护软件的大部分功能,已实现来电/短信拦截、手机应用、进程管理、缓存清理等功能,其中使用AIDL进程间通信技术,调用系统方法实现挂断黑名单来电电话;通过自定义动画实现360手机卫士正在加载中动画;自定义Toast样式悬浮窗实现来电归属地显示,归属地数据来自反编译小米数据库以及自定义DeviceAdmin获取设备管理器超级管理员权限实现一键锁屏、抹除数据功能。修改版的使用了Google的ViewDragHelper以及RecyclerView来制作动画效果(如平移旋转缩放) 3 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 25 5 | buildToolsVersion "25.0.2" 6 | 7 | defaultConfig { 8 | applicationId "com.example.yuemosafe" 9 | minSdkVersion 15 10 | targetSdkVersion 25 11 | versionCode 1 12 | versionName "1.0" 13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 14 | } 15 | buildTypes { 16 | release { 17 | minifyEnabled false 18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 19 | } 20 | } 21 | sourceSets { 22 | main { 23 | aidl.srcDirs = ['src/main/aidl', 'com.android.internal.telephony'] 24 | java.srcDirs = ['src/main/java', 'src/main/java/com.example.yuemosafe'] 25 | } 26 | } 27 | } 28 | 29 | dependencies { 30 | compile fileTree(include: ['*.jar'], dir: 'libs') 31 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 32 | exclude group: 'com.android.support', module: 'support-annotations' 33 | }) 34 | compile 'com.android.support:appcompat-v7:25.3.1' 35 | testCompile 'junit:junit:4.12' 36 | compile 'org.xutils:xutils:3.5.0' 37 | compile files('libs/RootTools-2.4.jar') 38 | } 39 | -------------------------------------------------------------------------------- /app/libs/RootTools-2.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/libs/RootTools-2.4.jar -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in D:\Android\android-sdk-windows/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/example/yuemosafe/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device_admin_sample. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.example.yuemosafe", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/aidl/android/content/pm/IPackageDataObserver.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | ** 3 | ** Copyright 2007, The Android Open Source Project 4 | ** 5 | ** Licensed under the Apache License, Version 2.0 (the "License"); 6 | ** you may not use this file except in compliance with the License. 7 | ** You may obtain a copy of the License at 8 | ** 9 | ** http://www.apache.org/licenses/LICENSE-2.0 10 | ** 11 | ** Unless required by applicable law or agreed to in writing, software 12 | ** distributed under the License is distributed on an "AS IS" BASIS, 13 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ** See the License for the specific language governing permissions and 15 | ** limitations under the License. 16 | */ 17 | 18 | package android.content.pm; 19 | 20 | /** 21 | * API for package data change related callbacks from the Package Manager. 22 | * Some usage scenarios include deletion of cache directory, generate 23 | * statistics related to code, data, cache usage(TODO) 24 | * {@hide} 25 | */ 26 | oneway interface IPackageDataObserver { 27 | void onRemoveCompleted(in String packageName, boolean succeeded); 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/aidl/android/content/pm/IPackageStatsObserver.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | ** 3 | ** Copyright 2007, The Android Open Source Project 4 | ** 5 | ** Licensed under the Apache License, Version 2.0 (the "License"); 6 | ** you may not use this file except in compliance with the License. 7 | ** You may obtain a copy of the License at 8 | ** 9 | ** http://www.apache.org/licenses/LICENSE-2.0 10 | ** 11 | ** Unless required by applicable law or agreed to in writing, software 12 | ** distributed under the License is distributed on an "AS IS" BASIS, 13 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ** See the License for the specific language governing permissions and 15 | ** limitations under the License. 16 | */ 17 | 18 | package android.content.pm; 19 | 20 | import android.content.pm.PackageStats; 21 | /** 22 | * API for package data change related callbacks from the Package Manager. 23 | * Some usage scenarios include deletion of cache directory, generate 24 | * statistics related to code, data, cache usage(TODO) 25 | * {@hide} 26 | */ 27 | oneway interface IPackageStatsObserver { 28 | 29 | void onGetStatsCompleted(in PackageStats pStats, boolean succeeded); 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/aidl/android/content/pm/PackageStats.aidl: -------------------------------------------------------------------------------- 1 | /* //device/java/android/android/view/WindowManager.aidl 2 | ** 3 | ** Copyright 2007, The Android Open Source Project 4 | ** 5 | ** Licensed under the Apache License, Version 2.0 (the "License"); 6 | ** you may not use this file except in compliance with the License. 7 | ** You may obtain a copy of the License at 8 | ** 9 | ** http://www.apache.org/licenses/LICENSE-2.0 10 | ** 11 | ** Unless required by applicable law or agreed to in writing, software 12 | ** distributed under the License is distributed on an "AS IS" BASIS, 13 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | ** See the License for the specific language governing permissions and 15 | ** limitations under the License. 16 | */ 17 | 18 | package android.content.pm; 19 | 20 | parcelable PackageStats; 21 | -------------------------------------------------------------------------------- /app/src/main/assets/address.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/assets/address.db -------------------------------------------------------------------------------- /app/src/main/assets/antivirus.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/assets/antivirus.db -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/advancedtools/AdvancedToolsActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.advancedtools; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import android.support.v7.app.AppCompatActivity; 6 | import android.view.View; 7 | import android.widget.ImageView; 8 | import android.widget.TextView; 9 | 10 | import com.example.yuemosafe.R; 11 | 12 | 13 | public class AdvancedToolsActivity extends AppCompatActivity implements View.OnClickListener { 14 | 15 | 16 | @Override 17 | protected void onCreate(Bundle savedInstanceState) { 18 | super.onCreate(savedInstanceState); 19 | //requestWindowFeature(Window.FEATURE_NO_TITLE); 20 | if (getSupportActionBar()!=null) { 21 | getSupportActionBar().hide(); 22 | } 23 | setContentView(R.layout.activity_advanced_tools); 24 | initView(); 25 | } 26 | 27 | /**初始化控件*/ 28 | private void initView() { 29 | findViewById(R.id.rl_titlebar).setBackgroundColor( 30 | getResources().getColor(R.color.bright_red)); 31 | ImageView mLeftImgv = (ImageView) findViewById(R.id.imgv_leftbtn); 32 | ((TextView) findViewById(R.id.tv_title)).setText("高级工具"); 33 | mLeftImgv.setOnClickListener(this); 34 | mLeftImgv.setImageResource(R.drawable.back); 35 | 36 | findViewById(R.id.advanceview_applock).setOnClickListener(this); 37 | findViewById(R.id.advanceview_numbelongs).setOnClickListener(this); 38 | findViewById(R.id.advanceview_smsbackup).setOnClickListener(this); 39 | findViewById(R.id.advanceview_smsreducition).setOnClickListener(this); 40 | 41 | } 42 | 43 | @Override 44 | public void onClick(View v) { 45 | switch (v.getId()) { 46 | case R.id.imgv_leftbtn: 47 | finish(); 48 | break; 49 | case R.id.advanceview_applock: 50 | //进入程序锁页面 51 | startActivity(AppLockActivity.class); 52 | break; 53 | case R.id.advanceview_numbelongs: 54 | //进入归属地查询页面 55 | startActivity(NumBelongtoActivity.class); 56 | break; 57 | case R.id.advanceview_smsbackup: 58 | //进入短信备份页面 59 | startActivity(SMSBackupActivity.class); 60 | break; 61 | case R.id.advanceview_smsreducition: 62 | //进入短信还原页面 63 | startActivity(SMSReducitionActivity.class); 64 | break; 65 | } 66 | } 67 | 68 | /** 69 | * 开启新的activity不关闭自己 70 | * @param cls 新的activity的字节码 71 | */ 72 | public void startActivity(Class cls){ 73 | Intent intent = new Intent(this,cls); 74 | startActivity(intent); 75 | } 76 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/advancedtools/bean/AppInfo.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.advancedtools.bean; 2 | 3 | /** 4 | * Created by yueyue on 2017/5/5. 5 | */ 6 | 7 | import android.graphics.drawable.Drawable; 8 | 9 | /** 10 | * App信息Bean,此类是重复 11 | * @author admin 12 | */ 13 | public class AppInfo{ 14 | 15 | /** 应用程序包名 */ 16 | public String packageName; 17 | /** 应用程序图标 */ 18 | public Drawable icon; 19 | /** 应用程序名称 */ 20 | public String appName; 21 | /** 应用程序路径 */ 22 | public String apkPath; 23 | /**应用程序是否加锁*/ 24 | public boolean isLock; 25 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/advancedtools/bean/SmsInfo.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.advancedtools.bean; 2 | 3 | /** 4 | * Created by yueyue on 2017/5/4. 5 | */ 6 | public class SmsInfo { 7 | public String body; 8 | public String date; 9 | public String type; 10 | public String address; 11 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/advancedtools/db/AppLockOpenHelper.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.advancedtools.db; 2 | 3 | import android.content.Context; 4 | import android.database.sqlite.SQLiteDatabase; 5 | import android.database.sqlite.SQLiteOpenHelper; 6 | 7 | /** 8 | * Created by yueyue on 2017/5/5. 9 | */ 10 | public class AppLockOpenHelper extends SQLiteOpenHelper { 11 | 12 | public AppLockOpenHelper(Context context) { 13 | super(context, "applock.db", null, 1); 14 | } 15 | 16 | @Override 17 | public void onCreate(SQLiteDatabase db) { 18 | db.execSQL("create table applock (_id integer primary key autoincrement, packagename varchar(20))"); 19 | } 20 | 21 | @Override 22 | public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 23 | 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/advancedtools/utils/AppInfoParser.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.advancedtools.utils; 2 | 3 | /** 4 | * Created by yueyue on 2017/5/5. 5 | */ 6 | 7 | import android.content.Context; 8 | import android.content.pm.PackageInfo; 9 | import android.content.pm.PackageManager; 10 | import android.graphics.drawable.Drawable; 11 | 12 | import com.example.yuemosafe.activity.advancedtools.bean.AppInfo; 13 | 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | 17 | /** 18 | * 工具类用来获取应用信息,此类重复 19 | */ 20 | public class AppInfoParser{ 21 | /** 22 | * 获取手机里面的所有的应用程序 23 | * @param context 上下文 24 | * @return 25 | */ 26 | public static List getAppInfos(Context context){ 27 | //得到一个java保证的 包管理器。 28 | PackageManager pm = context.getPackageManager(); 29 | List packInfos = pm.getInstalledPackages(0); 30 | List appinfos = new ArrayList(); 31 | for(PackageInfo packInfo:packInfos){ 32 | AppInfo appinfo = new AppInfo(); 33 | String packname = packInfo.packageName; 34 | appinfo.packageName = packname; 35 | Drawable icon = packInfo.applicationInfo.loadIcon(pm); 36 | appinfo. icon = icon; 37 | String appname = packInfo.applicationInfo.loadLabel(pm).toString(); 38 | appinfo.appName = appname; 39 | //应用程序apk包的路径 40 | String apkpath = packInfo.applicationInfo.sourceDir; 41 | appinfo.apkPath = apkpath; 42 | appinfos.add(appinfo); 43 | appinfo = null; 44 | } 45 | return appinfos; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/advancedtools/utils/DensityUtil.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.advancedtools.utils; 2 | 3 | /** 4 | * Created by yueyue on 2017/5/4. 5 | */ 6 | 7 | import android.content.Context; 8 | 9 | /** 10 | * dp 与px 互转的工具类 11 | * @author yangdan 12 | */ 13 | public class DensityUtil { 14 | /** 15 | * dip转换像素px 16 | */ 17 | public static int dip2px(Context context, float dpValue) { 18 | try { 19 | final float scale = context.getResources().getDisplayMetrics().density; 20 | return (int) (dpValue * scale + 0.5f); 21 | } catch (Exception e) { 22 | e.printStackTrace(); 23 | } 24 | return (int) dpValue; 25 | } 26 | 27 | /** 28 | * 像素px转换为dip 29 | */ 30 | public static int px2dip(Context context, float pxValue) { 31 | try { 32 | final float scale = context.getResources().getDisplayMetrics().density; 33 | return (int) (pxValue / scale + 0.5f); 34 | } catch (Exception e) { 35 | e.printStackTrace(); 36 | } 37 | return (int) pxValue; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/advancedtools/utils/UIUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.advancedtools.utils; 2 | 3 | import android.app.Activity; 4 | import android.widget.Toast; 5 | 6 | /** 7 | * Created by yueyue on 2017/5/4. 8 | */ 9 | 10 | 11 | public class UIUtils { 12 | public static void showToast(final Activity activity, final String msg){ 13 | if("main".equals(Thread.currentThread().getName())){ 14 | //toast是运行在主线程中的 15 | Toast.makeText(activity, msg, Toast.LENGTH_SHORT).show(); 16 | }else{ 17 | activity.runOnUiThread(new Runnable() { 18 | @Override 19 | public void run() { 20 | Toast.makeText(activity, msg, Toast.LENGTH_SHORT).show(); 21 | } 22 | }); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/advancedtools/widget/AdvancedToolsView.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.advancedtools.widget; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.graphics.drawable.Drawable; 6 | import android.util.AttributeSet; 7 | import android.view.View; 8 | import android.widget.ImageView; 9 | import android.widget.RelativeLayout; 10 | import android.widget.TextView; 11 | 12 | import com.example.yuemosafe.R; 13 | 14 | /** 15 | * Created by yueyue on 2017/5/4. 16 | */ 17 | 18 | public class AdvancedToolsView extends RelativeLayout { 19 | 20 | private String desc; 21 | private Drawable drawable; 22 | private TextView mDesriptionTV; 23 | private ImageView mLeftImgv; 24 | 25 | public AdvancedToolsView(Context context) { 26 | super(context); 27 | initView(context); 28 | } 29 | 30 | public AdvancedToolsView(Context context, AttributeSet attrs) { 31 | super(context, attrs); 32 | TypedArray typedArray = context.obtainStyledAttributes(attrs, 33 | R.styleable.AdvancedToolsView); 34 | desc = typedArray.getString(R.styleable.AdvancedToolsView_desc); 35 | drawable = typedArray.getDrawable(R.styleable.AdvancedToolsView_android_src); 36 | 37 | typedArray.recycle();//回收资源 38 | initView(context); 39 | } 40 | 41 | public AdvancedToolsView(Context context, AttributeSet attrs, int defStyleAttr) { 42 | super(context, attrs, defStyleAttr); 43 | initView(context); 44 | } 45 | 46 | private void initView(Context context) { 47 | View view = View.inflate(context, R.layout.ui_advancedtools_view, null); 48 | this.addView(view);//布局挂载到当前AdvancedToolsView 49 | mDesriptionTV = (TextView) findViewById(R.id.tv_decription); 50 | mLeftImgv = (ImageView) findViewById(R.id.imgv_left); 51 | mDesriptionTV.setText(desc); 52 | if (drawable != null) { 53 | mLeftImgv.setImageDrawable(drawable); 54 | } 55 | 56 | 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/appmanager/bean/AppInfo.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.appmanager.bean; 2 | 3 | import android.graphics.drawable.Drawable; 4 | 5 | /** 6 | * Created by yueyue on 2017/4/29. 7 | */ 8 | 9 | public class AppInfo { 10 | /** 应用程序包名 */ 11 | public String packageName; 12 | /** 应用程序图标 */ 13 | public Drawable icon; 14 | /** 应用程序名称 */ 15 | public String appName; 16 | /** 应用程序路径 */ 17 | public String apkPath; 18 | /** 应用程序大小 */ 19 | public long appSize; 20 | /** 是否是手机存储 */ 21 | public boolean isInRoom; 22 | /** 是否是用户应用 */ 23 | public boolean isUserApp; 24 | /** 是否选中,默认都为false */ 25 | public boolean isSelected = false; 26 | 27 | /**拿到App位置字符串*/ 28 | public String getAppLocation(boolean isInRoom) { 29 | if (isInRoom) { 30 | return "手机内存"; 31 | } else { 32 | return "外部存储"; 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/appmanager/utils/AppInfoParser.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.appmanager.utils; 2 | 3 | import android.content.Context; 4 | import android.content.pm.ApplicationInfo; 5 | import android.content.pm.PackageInfo; 6 | import android.content.pm.PackageManager; 7 | 8 | import com.example.yuemosafe.activity.appmanager.bean.AppInfo; 9 | 10 | import java.io.File; 11 | import java.util.ArrayList; 12 | import java.util.List; 13 | 14 | /** 15 | * 获取程序的应用信息 16 | * Created by yueyue on 2017/4/29. 17 | */ 18 | 19 | public class AppInfoParser { 20 | 21 | /** 22 | * 获取手机里面的所有的应用程序 23 | * @param context 上下文 24 | * @return 25 | */ 26 | public static List getAppInfos(Context context) { 27 | //获得一个包管理器 28 | PackageManager pm = context.getPackageManager(); 29 | List packInfos = pm.getInstalledPackages(0); 30 | List appInfos = new ArrayList<>(); 31 | for (PackageInfo packInfo:packInfos) { 32 | AppInfo appInfo = new AppInfo(); 33 | //获得应用的包名 34 | appInfo.packageName=packInfo.packageName; 35 | //获得程序的应用图标 36 | appInfo.icon=packInfo.applicationInfo.loadIcon(pm); 37 | //获得app应用的名称 38 | appInfo.appName=packInfo.applicationInfo.loadLabel(pm).toString(); 39 | //获得app应用的安装路径 40 | appInfo.apkPath=packInfo.applicationInfo.sourceDir; 41 | File file = new File(appInfo.apkPath); 42 | appInfo.appSize = file.length(); 43 | 44 | //应用程序安装的位置 45 | int flags = packInfo.applicationInfo.flags;//二进制映射 46 | if ((ApplicationInfo.FLAG_EXTERNAL_STORAGE & flags)!=0) { 47 | //外部存储 48 | appInfo.isInRoom=false; 49 | }else { 50 | //手机内存 51 | appInfo.isInRoom=true; 52 | } 53 | 54 | if ((ApplicationInfo.FLAG_SYSTEM & flags)!=0) { 55 | //系统应用 56 | appInfo.isUserApp=false; 57 | }else { 58 | //用户应用 59 | appInfo.isUserApp=true; 60 | } 61 | 62 | appInfos.add(appInfo); 63 | appInfo=null;//置空让其成为垃圾 64 | 65 | 66 | } 67 | 68 | return appInfos; 69 | 70 | } 71 | 72 | 73 | 74 | } 75 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/appmanager/utils/DensityUtil.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.appmanager.utils; 2 | 3 | /** 4 | * Created by yueyue on 2017/4/29. 5 | */ 6 | 7 | import android.content.Context; 8 | 9 | /** 10 | * dp 与px 互转的工具类 11 | * @author yangdan 12 | */ 13 | public class DensityUtil { 14 | /** 15 | * dip转换像素px 16 | */ 17 | public static int dip2px(Context context, float dpValue) { 18 | try { 19 | final float scale = context.getResources().getDisplayMetrics().density; 20 | return (int) (dpValue * scale + 0.5f); 21 | } catch (Exception e) { 22 | e.printStackTrace(); 23 | } 24 | return (int) dpValue; 25 | } 26 | 27 | /** 28 | * 像素px转换为dip 29 | */ 30 | public static int px2dip(Context context, float pxValue) { 31 | try { 32 | final float scale = context.getResources().getDisplayMetrics().density; 33 | return (int) (pxValue / scale + 0.5f); 34 | } catch (Exception e) { 35 | e.printStackTrace(); 36 | } 37 | return (int) pxValue; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/cacheclear/adapter/CacheCleanAdapter.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.cacheclear.adapter; 2 | 3 | import android.content.Context; 4 | import android.text.format.Formatter; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.BaseAdapter; 8 | import android.widget.ImageView; 9 | import android.widget.TextView; 10 | 11 | import com.example.yuemosafe.R; 12 | import com.example.yuemosafe.activity.cacheclear.bean.CacheInfo; 13 | 14 | import java.util.List; 15 | 16 | /** 17 | * Created by yueyue on 2017/5/1. 18 | */ 19 | 20 | public class CacheCleanAdapter extends BaseAdapter { 21 | 22 | private Context context; 23 | private List cacheInfos; 24 | 25 | 26 | public CacheCleanAdapter(Context context, List cacheInfos) { 27 | super(); 28 | this.context = context; 29 | this.cacheInfos = cacheInfos; 30 | } 31 | 32 | @Override 33 | public int getCount() { 34 | return cacheInfos.size(); 35 | } 36 | 37 | @Override 38 | public Object getItem(int position) { 39 | return cacheInfos.get(position); 40 | } 41 | 42 | @Override 43 | public long getItemId(int position) { 44 | return position; 45 | } 46 | 47 | @Override 48 | public View getView(int position, View convertView, ViewGroup parent) { 49 | ViewHolder holder = null; 50 | if(convertView == null){ 51 | holder = new ViewHolder(); 52 | convertView = View.inflate(context, R.layout.item_cacheclean_list, null); 53 | holder.mAppIconImgv = (ImageView) convertView.findViewById(R.id.imgv_appicon_cacheclean); 54 | holder.mAppNameTV = (TextView) convertView.findViewById(R.id.tv_appname_cacheclean); 55 | holder.mCacheSizeTV = (TextView) convertView.findViewById(R.id.tv_appsize_cacheclean); 56 | convertView.setTag(holder); 57 | }else{ 58 | holder = (ViewHolder) convertView.getTag(); 59 | } 60 | CacheInfo cacheInfo = cacheInfos.get(position); 61 | holder.mAppIconImgv.setImageDrawable(cacheInfo.appIcon); 62 | holder.mAppNameTV.setText(cacheInfo.appName); 63 | holder.mCacheSizeTV.setText(Formatter.formatFileSize(context, cacheInfo.cacheSize)); 64 | return convertView; 65 | } 66 | 67 | static class ViewHolder{ 68 | ImageView mAppIconImgv; 69 | TextView mAppNameTV; 70 | TextView mCacheSizeTV; 71 | } 72 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/cacheclear/bean/CacheInfo.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.cacheclear.bean; 2 | 3 | import android.graphics.drawable.Drawable; 4 | 5 | /** 6 | * Created by yueyue on 2017/5/1. 7 | */ 8 | 9 | public class CacheInfo { 10 | 11 | public String packagename; 12 | public long cacheSize; 13 | public Drawable appIcon; 14 | public String appName; 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/InterPasswordDialog.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost; 2 | 3 | import android.app.Dialog; 4 | import android.content.Context; 5 | import android.os.Bundle; 6 | import android.text.TextUtils; 7 | import android.view.View; 8 | import android.widget.Button; 9 | import android.widget.EditText; 10 | import android.widget.TextView; 11 | 12 | import com.example.yuemosafe.R; 13 | 14 | /**确认密码对话框*/ 15 | public class InterPasswordDialog extends Dialog implements android.view.View.OnClickListener{ 16 | 17 | /**对话框标题*/ 18 | private TextView mTitleTV; 19 | /**输入密码文本框*/ 20 | private EditText mInterET; 21 | /**确认按钮*/ 22 | private Button mOKBtn; 23 | /**取消按钮*/ 24 | private Button mCancleBtn; 25 | /**回调接口*/ 26 | private MyCallBack myCallBack; 27 | private Context context; 28 | 29 | public InterPasswordDialog(Context context) { 30 | super(context, R.style.dialog_custom); 31 | this.context = context; 32 | } 33 | 34 | public void setCallBack(MyCallBack myCallBack){ 35 | this.myCallBack = myCallBack; 36 | } 37 | 38 | @Override 39 | protected void onCreate(Bundle savedInstanceState) { 40 | setContentView(R.layout.inter_password_dialog); 41 | super.onCreate(savedInstanceState); 42 | initView(); 43 | } 44 | 45 | private void initView() { 46 | mTitleTV = (TextView) findViewById(R.id.tv_interpwd_title); 47 | mInterET = (EditText) findViewById(R.id.et_inter_password); 48 | mOKBtn = (Button) findViewById(R.id.btn_comfirm); 49 | mCancleBtn = (Button) findViewById(R.id.btn_dismiss); 50 | mOKBtn.setOnClickListener(this); 51 | mCancleBtn.setOnClickListener(this); 52 | 53 | } 54 | 55 | /*** 56 | * 设置对话框标题 57 | * @param title 58 | */ 59 | public void setTitle(String title){ 60 | if(!TextUtils.isEmpty(title)){ 61 | mTitleTV.setText(title); 62 | } 63 | } 64 | 65 | public String getPassword(){ 66 | return mInterET.getText().toString(); 67 | } 68 | @Override 69 | public void onClick(View v) { 70 | switch (v.getId()) { 71 | case R.id.btn_comfirm: 72 | myCallBack.confirm(); 73 | break; 74 | case R.id.btn_dismiss: 75 | myCallBack.cancle(); 76 | break; 77 | } 78 | } 79 | /** 80 | * 回调接口 81 | * @author admin 82 | */ 83 | public interface MyCallBack{ 84 | void confirm(); 85 | void cancle(); 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/SetUp1Activity.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost; 2 | 3 | import android.os.Bundle; 4 | import android.widget.RadioButton; 5 | import android.widget.Toast; 6 | 7 | import com.example.yuemosafe.R; 8 | 9 | 10 | public class SetUp1Activity extends BaseSetUpActivity { 11 | 12 | @Override 13 | protected void onCreate(Bundle savedInstanceState) { 14 | super.onCreate(savedInstanceState); 15 | setContentView(R.layout.activity_setup1); 16 | initView(); 17 | } 18 | 19 | private void initView() { 20 | // 设置第一个小圆点的颜色 21 | ((RadioButton) findViewById(R.id.rb_first)).setChecked(true); 22 | } 23 | 24 | @Override 25 | public void showNext() { 26 | startActivityAndFinishSelf(SetUp2Activity.class); 27 | } 28 | 29 | @Override 30 | public void showPre() { 31 | Toast.makeText(this, "当前页面已经是第一页", 0).show(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/SetUp3Activity.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.Intent; 5 | import android.content.SharedPreferences.Editor; 6 | import android.os.Bundle; 7 | import android.text.TextUtils; 8 | import android.view.View; 9 | import android.view.View.OnClickListener; 10 | import android.widget.EditText; 11 | import android.widget.RadioButton; 12 | import android.widget.Toast; 13 | 14 | import com.example.yuemosafe.R; 15 | 16 | 17 | @SuppressLint("ShowToast") 18 | public class SetUp3Activity extends BaseSetUpActivity implements OnClickListener{ 19 | 20 | 21 | private EditText mInputPhone; 22 | @Override 23 | protected void onCreate(Bundle savedInstanceState) { 24 | super.onCreate(savedInstanceState); 25 | setContentView(R.layout.activity_setup3); 26 | initView(); 27 | } 28 | /** 29 | * 初始化控件 30 | */ 31 | private void initView() { 32 | ((RadioButton)findViewById(R.id.rb_third)).setChecked(true); 33 | findViewById(R.id.btn_addcontact).setOnClickListener(this); 34 | mInputPhone = (EditText) findViewById(R.id.et_inputphone); 35 | String safephone= sp.getString("safephone", null); 36 | if(!TextUtils.isEmpty(safephone)){ 37 | mInputPhone.setText(safephone); 38 | } 39 | } 40 | 41 | @Override 42 | public void showNext() { 43 | //判断文本输入框中是否有电话号码 44 | String safePhone = mInputPhone.getText().toString().trim(); 45 | if(TextUtils.isEmpty(safePhone)){ 46 | Toast.makeText(this, "请输入安全号码", 0).show(); 47 | return; 48 | } 49 | Editor edit = sp.edit(); 50 | edit.putString("safephone", safePhone); 51 | edit.commit(); 52 | startActivityAndFinishSelf(SetUp4Activity.class); 53 | } 54 | 55 | @Override 56 | public void showPre() { 57 | startActivityAndFinishSelf(SetUp2Activity.class); 58 | } 59 | @Override 60 | public void onClick(View v) { 61 | switch (v.getId()) { 62 | case R.id.btn_addcontact: 63 | startActivityForResult(new Intent(this,ContactSelectActivity.class), 0); 64 | break; 65 | } 66 | } 67 | 68 | @Override 69 | protected void onActivityResult(int requestCode, int resultCode, Intent data) { 70 | super.onActivityResult(requestCode, resultCode, data); 71 | if(data!=null){ 72 | String phone = data.getStringExtra("phone"); 73 | mInputPhone.setText(phone); 74 | } 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/SetUp4Activity.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost; 2 | 3 | import android.content.SharedPreferences.Editor; 4 | import android.os.Bundle; 5 | import android.widget.CompoundButton; 6 | import android.widget.CompoundButton.OnCheckedChangeListener; 7 | import android.widget.RadioButton; 8 | import android.widget.TextView; 9 | import android.widget.ToggleButton; 10 | 11 | import com.example.yuemosafe.R; 12 | 13 | 14 | public class SetUp4Activity extends BaseSetUpActivity { 15 | 16 | 17 | private TextView mStatusTV; 18 | private ToggleButton mToggleButton; 19 | 20 | @Override 21 | protected void onCreate(Bundle savedInstanceState) { 22 | super.onCreate(savedInstanceState); 23 | setContentView(R.layout.activity_setup4); 24 | initView(); 25 | } 26 | 27 | private void initView() { 28 | ((RadioButton)findViewById(R.id.rb_four)).setChecked(true); 29 | mStatusTV = (TextView) findViewById(R.id.tv_setup4_status); 30 | mToggleButton = (ToggleButton) findViewById(R.id.togglebtn_securityfunction); 31 | mToggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() { 32 | @Override 33 | public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 34 | if(isChecked){ 35 | mStatusTV.setText("防盗保护已经开启"); 36 | }else{ 37 | mStatusTV.setText("防盗保护没有开启"); 38 | } 39 | Editor editor = sp.edit(); 40 | editor.putBoolean("protecting", isChecked); 41 | editor.commit(); 42 | } 43 | }); 44 | 45 | boolean protecting = sp.getBoolean("protecting", true); 46 | if(protecting){ 47 | mStatusTV.setText("防盗保护已经开启"); 48 | mToggleButton.setChecked(true); 49 | }else{ 50 | mStatusTV.setText("防盗保护没有开启"); 51 | mToggleButton.setChecked(false); 52 | } 53 | } 54 | 55 | @Override 56 | public void showNext() { 57 | //跳转至 防盗保护页面 58 | Editor editor = sp.edit(); 59 | editor.putBoolean("isSetUp", true); 60 | editor.commit(); 61 | startActivityAndFinishSelf(LostFindActivity.class); 62 | } 63 | 64 | @Override 65 | public void showPre() { 66 | startActivityAndFinishSelf(SetUp3Activity.class); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/SetUpPasswordDialog.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost; 2 | 3 | import android.app.Dialog; 4 | import android.content.Context; 5 | import android.os.Bundle; 6 | import android.text.TextUtils; 7 | import android.view.View; 8 | import android.widget.EditText; 9 | import android.widget.TextView; 10 | 11 | import com.example.yuemosafe.R; 12 | 13 | public class SetUpPasswordDialog extends Dialog implements android.view.View.OnClickListener{ 14 | 15 | /**标题栏*/ 16 | private TextView mTitleTV; 17 | /**首次输入密码文本框*/ 18 | public EditText mFirstPWDET; 19 | /**确认密码文本框*/ 20 | public EditText mAffirmET; 21 | /**回调接口*/ 22 | private MyCallBack myCallBack; 23 | 24 | public SetUpPasswordDialog(Context context) { 25 | super(context, R.style.dialog_custom); 26 | } 27 | 28 | public void setCallBack(MyCallBack myCallBack){ 29 | this.myCallBack = myCallBack; 30 | } 31 | @Override 32 | protected void onCreate(Bundle savedInstanceState) { 33 | setContentView(R.layout.setup_password_dialog); 34 | super.onCreate(savedInstanceState); 35 | initView(); 36 | } 37 | 38 | /**初始化控件*/ 39 | private void initView() { 40 | mTitleTV = (TextView) findViewById(R.id.tv_interpwd_title); 41 | mFirstPWDET = (EditText) findViewById(R.id.et_firstpwd); 42 | mAffirmET = (EditText) findViewById(R.id.et_affirm_password); 43 | findViewById(R.id.btn_ok).setOnClickListener(this); 44 | findViewById(R.id.btn_cancle).setOnClickListener(this); 45 | } 46 | 47 | /** 48 | * 设置对话框标题栏 49 | * @param title 50 | */ 51 | public void setTitle(String title){ 52 | if(!TextUtils.isEmpty(title)){ 53 | mTitleTV.setText(title); 54 | } 55 | } 56 | 57 | @Override 58 | public void onClick(View v) { 59 | switch (v.getId()) { 60 | case R.id.btn_ok: 61 | myCallBack.ok(); 62 | break; 63 | case R.id.btn_cancle: 64 | myCallBack.cancle(); 65 | break; 66 | 67 | } 68 | } 69 | public interface MyCallBack{ 70 | void ok(); 71 | void cancle(); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/adapter/ContactAdapter.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost.adapter; 2 | 3 | /** 4 | * Created by yueyue on 2017/4/23. 5 | */ 6 | 7 | import android.content.Context; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.BaseAdapter; 11 | import android.widget.TextView; 12 | 13 | import com.example.yuemosafe.R; 14 | import com.example.yuemosafe.activity.lost.bean.ContactInfo; 15 | 16 | import java.util.List; 17 | 18 | public class ContactAdapter extends BaseAdapter { 19 | 20 | private List contactInfos; 21 | private Context context; 22 | 23 | 24 | 25 | public ContactAdapter(List contactInfos, Context context) { 26 | super(); 27 | this.contactInfos = contactInfos; 28 | this.context = context; 29 | } 30 | 31 | @Override 32 | public int getCount() { 33 | // TODO Auto-generated method stub 34 | return contactInfos.size(); 35 | } 36 | 37 | @Override 38 | public Object getItem(int position) { 39 | // TODO Auto-generated method stub 40 | return contactInfos.get(position); 41 | } 42 | 43 | @Override 44 | public long getItemId(int position) { 45 | // TODO Auto-generated method stub 46 | return position; 47 | } 48 | 49 | @Override 50 | public View getView(int position, View convertView, ViewGroup parent) { 51 | ViewHolder holder = null; 52 | if(convertView == null){ 53 | convertView = View.inflate(context, R.layout.item_list_contact_select, null); 54 | holder = new ViewHolder(); 55 | holder.mNameTV = (TextView) convertView.findViewById(R.id.tv_name); 56 | holder.mPhoneTV = (TextView) convertView.findViewById(R.id.tv_phone); 57 | convertView.setTag(holder); 58 | }else{ 59 | holder = (ViewHolder) convertView.getTag(); 60 | } 61 | holder.mNameTV.setText(contactInfos.get(position).name); 62 | holder.mPhoneTV.setText(contactInfos.get(position).phone); 63 | return convertView; 64 | } 65 | 66 | static class ViewHolder{ 67 | TextView mNameTV; 68 | TextView mPhoneTV; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/adapter/HomeAdapter.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost.adapter; 2 | 3 | import android.app.Activity; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.BaseAdapter; 7 | import android.widget.ImageView; 8 | import android.widget.TextView; 9 | 10 | import com.example.yuemosafe.R; 11 | import com.example.yuemosafe.activity.main.HomeActivity; 12 | 13 | 14 | /** 15 | * GridView显示界面用到的Adapter 16 | * Created by yueyue on 2017/4/22. 17 | */ 18 | public class HomeAdapter extends BaseAdapter{ 19 | int[] imageId = { R.drawable.safe, R.drawable.callmsgsafe, R.drawable.app, 20 | R.drawable.trojan, R.drawable.sysoptimize,R.drawable.taskmanager, 21 | R.drawable.netmanager,R.drawable.atools,R.drawable.settings }; 22 | String[] names = { "手机防盗", "通讯卫士","软件管家","手机杀毒","缓存清理","进程管理", 23 | "流量统计", "高级工具", "设置中心" }; 24 | 25 | private Activity homeActivity; 26 | 27 | public HomeAdapter(HomeActivity homeActivity) { 28 | this.homeActivity=homeActivity; 29 | } 30 | 31 | 32 | @Override 33 | public int getCount() { 34 | return names.length; 35 | } 36 | 37 | @Override 38 | public Object getItem(int position) { 39 | return null; 40 | } 41 | 42 | @Override 43 | public long getItemId(int position) { 44 | return position; 45 | } 46 | 47 | @Override 48 | public View getView(int position, View convertView, ViewGroup parent) { 49 | ViewHolder viewHolder=null; 50 | if (convertView==null) { 51 | 52 | viewHolder=new ViewHolder(); 53 | convertView = View.inflate(parent.getContext(), R.layout.item_home, null); 54 | viewHolder.iv_icon= (ImageView) convertView.findViewById(R.id.iv_icon); 55 | viewHolder .tv_name= (TextView) convertView.findViewById(R.id.tv_name); 56 | 57 | 58 | convertView.setTag(viewHolder); 59 | } else { 60 | viewHolder= (ViewHolder) convertView.getTag(); 61 | } 62 | viewHolder.iv_icon.setImageResource(imageId[position]); 63 | viewHolder .tv_name.setText(names[position]); 64 | 65 | return convertView; 66 | } 67 | 68 | static class ViewHolder { 69 | ImageView iv_icon; 70 | TextView tv_name; 71 | } 72 | 73 | } 74 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/bean/ContactInfo.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost.bean; 2 | 3 | /** 4 | * Created by yueyue on 2017/4/23. 5 | */ 6 | 7 | public class ContactInfo { 8 | 9 | public String id; 10 | public String name; 11 | public String phone; 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/bean/VersionEntity.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost.bean; 2 | 3 | /** 4 | * Created by yueyue on 2017/4/21. 5 | */ 6 | 7 | public class VersionEntity { 8 | /**服务器版的版本号*/ 9 | public String versionCode; 10 | 11 | /**新版本的描述*/ 12 | public String des; 13 | 14 | /**apk下载地址*/ 15 | public String apkUrl; 16 | 17 | @Override 18 | public String toString() { 19 | return "VersionEntity{" + 20 | "versionCode='" + versionCode + '\'' + 21 | ", des='" + des + '\'' + 22 | ", apkurl='" + apkUrl + '\'' + 23 | '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/service/AlarmService.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost.service; 2 | 3 | import android.app.Service; 4 | import android.content.Intent; 5 | import android.media.MediaPlayer; 6 | import android.os.IBinder; 7 | 8 | import com.example.yuemosafe.R; 9 | 10 | public class AlarmService extends Service { 11 | 12 | //创建一个播放音乐的实例 13 | private MediaPlayer mPlayer; 14 | 15 | public AlarmService() { 16 | } 17 | 18 | @Override 19 | public void onCreate() { 20 | super.onCreate(); 21 | mPlayer=MediaPlayer.create(this, R.raw.shimian); 22 | } 23 | 24 | @Override 25 | public int onStartCommand(Intent intent, int flags, int startId) { 26 | mPlayer.setVolume(0,1.0f); 27 | mPlayer.start(); 28 | return super.onStartCommand(intent, flags, startId); 29 | } 30 | 31 | @Override 32 | public IBinder onBind(Intent intent) { 33 | // TODO: Return the communication channel to the service. 34 | throw new UnsupportedOperationException("Not yet implemented"); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/service/MyDeviceAdminReciever.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost.service; 2 | 3 | import android.app.admin.DeviceAdminReceiver; 4 | 5 | /** 6 | * Created by yueyue on 2017/4/25. 7 | */ 8 | 9 | public class MyDeviceAdminReciever extends DeviceAdminReceiver { 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/utils/GlobalValue.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost.utils; 2 | 3 | /** 4 | * Created by yueyue on 2017/4/21. 5 | */ 6 | 7 | import android.os.Environment; 8 | 9 | import java.io.File; 10 | 11 | /** 12 | * 存放应用的全局变量 13 | */ 14 | public class GlobalValue { 15 | 16 | /** 17 | * 安全手机卫士更新安装包存储的位置 18 | */ 19 | //Environment.getExternalStorageDirectory() + File.separator + "mobilesafe2.apk" 20 | public static final String UPDATE_APK_PATH = Environment.getExternalStorageDirectory() 21 | + File.separator + "mobilesafe2.apk"; 22 | 23 | /** 24 | * 安全手机卫士版本获得服务器版本的链接 25 | */ 26 | public static final String UPDATE_APK_URL = "http://10.0.2.2:8080/yuesafeupdate.json"; 27 | 28 | 29 | /** 30 | * 之前是否进行设置过手机防盗界面 31 | */ 32 | public static final String IS_LOST_SETUP_PASSWORD ="is_setup_password"; 33 | 34 | /** 35 | * 保存进入手机防盗功能对话框的密码 36 | */ 37 | public static final String DIALOG_LOST_INTER_PWD = "dialog_lost_inter_pwd"; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/utils/MD5Utils.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost.utils; 2 | 3 | import java.security.MessageDigest; 4 | import java.security.NoSuchAlgorithmException; 5 | 6 | public class MD5Utils { 7 | 8 | /** 9 | * md5���ܵ��㷨 10 | * @param text 11 | * @return 12 | */ 13 | public static String encode(String text){ 14 | try { 15 | MessageDigest digest = MessageDigest.getInstance("md5"); 16 | byte[] result = digest.digest(text.getBytes()); 17 | StringBuilder sb =new StringBuilder(); 18 | for(byte b : result){ 19 | int number = b&0xff; 20 | String hex = Integer.toHexString(number); 21 | if(hex.length()==1){ 22 | sb.append("0"+hex); 23 | }else{ 24 | sb.append(hex); 25 | } 26 | } 27 | return sb.toString(); 28 | } catch (NoSuchAlgorithmException e) { 29 | e.printStackTrace(); 30 | //can't reach 31 | return ""; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/utils/MyUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost.utils; 2 | 3 | import android.app.Activity; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.content.pm.PackageInfo; 7 | import android.content.pm.PackageManager; 8 | import android.net.Uri; 9 | import android.os.Environment; 10 | 11 | import java.io.File; 12 | 13 | /** 14 | * Created by yueyue on 2017/4/21. 15 | */ 16 | 17 | /** 18 | * 获取版本号跟安装APK 19 | */ 20 | public class MyUtils { 21 | 22 | /** 23 | * 获得当前应用的版本号 24 | * 25 | * @param context 上下文环境 26 | * @return 当前应用的版本号 27 | */ 28 | public static String getVersion(Context context) { 29 | // 获取packagemanager的实例 30 | PackageManager pm = context.getPackageManager(); 31 | try { 32 | // getPackageName()是你当前类的包名,0代表是获取版本信息 33 | PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0); 34 | return pi.versionName; 35 | } catch (PackageManager.NameNotFoundException e) { 36 | e.printStackTrace(); 37 | return ""; 38 | } 39 | 40 | } 41 | 42 | 43 | /** 44 | * 跳转到安装apk的界面 45 | * 46 | * @param activity 47 | */ 48 | public static void installApk(Activity activity) { 49 | File targetFile = new File(GlobalValue.UPDATE_APK_PATH); 50 | if (targetFile.exists()) { 51 | //创建跳转到安装apk界面的意图 52 | Intent intent = new Intent(Intent.ACTION_VIEW); 53 | //添加默认分类 54 | intent.addCategory(Intent.CATEGORY_DEFAULT); 55 | intent.setDataAndType(Uri.fromFile(targetFile),"application/vnd.android.package-archive"); 56 | activity.startActivityForResult(intent, 10); 57 | } 58 | 59 | 60 | } 61 | 62 | /** 63 | * 判断sdcard是否挂载上来了 64 | * 65 | * @return 66 | */ 67 | public static boolean isSdcardMounted() { 68 | String SDstate = Environment.getExternalStorageState(); 69 | if (Environment.MEDIA_MOUNTED.equals(SDstate)) { 70 | return true; 71 | } 72 | return false; 73 | } 74 | 75 | /** 76 | * 设置文件下载的路径,如果sd挂载了,那么就下载到sd里面 77 | * 78 | * @param fileUrl 79 | */ 80 | public static String setFilePath(String fileUrl) { 81 | String fileName = fileUrl.substring(fileUrl.lastIndexOf("/") + 1); 82 | String filePath = null; 83 | //设置下载的路径 84 | if (isSdcardMounted()) { 85 | filePath = Environment.getExternalStorageDirectory() +File.separator + fileName; 86 | } else { 87 | filePath = Environment.getDataDirectory() +File.separator + fileName; 88 | } 89 | return filePath; 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/lost/utils/SpUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.lost.utils; 2 | 3 | /** 4 | * Created by yueyue on 2017/4/22. 5 | */ 6 | 7 | import android.content.Context; 8 | import android.content.SharedPreferences; 9 | 10 | /** 11 | * 主要用于保存应用的一些参数设置 12 | */ 13 | public class SpUtils { 14 | 15 | private static SharedPreferences sp=null; 16 | /** 17 | * 在sp中存储boolean类型数据 18 | * @param context 19 | * @param key 20 | * @param value 21 | */ 22 | public static void putBoolean(Context context,String key,boolean value){ 23 | if (sp==null) { 24 | sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); 25 | } 26 | sp.edit().putBoolean(key,value).commit(); 27 | } 28 | 29 | /** 30 | * 在sp中取出boolean类型数据 31 | * @param context 32 | * @param key 33 | * @return key对应的value,默认返回false 34 | */ 35 | public static boolean getBoolean(Context context,String key){ 36 | if (sp==null) { 37 | sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); 38 | } 39 | return sp.getBoolean(key,false); 40 | } 41 | 42 | /** 43 | * 在sp中存储String类型数据 44 | * @param context 45 | * @param key 46 | * @param value 47 | */ 48 | public static void putString(Context context,String key, String value) { 49 | if (sp==null) { 50 | sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); 51 | } 52 | sp.edit().putString(key,value).commit(); 53 | } 54 | 55 | /** 56 | * 在sp中取出String类型数据 57 | * @param context 58 | * @param key 59 | * @return key对应的value,默认返回空字符串"" 60 | */ 61 | public static String getString(Context context, String key){ 62 | if (sp==null) { 63 | sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); 64 | } 65 | return sp.getString(key,""); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/main/MyApplication.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.main; 2 | 3 | import android.app.Application; 4 | 5 | import org.xutils.x; 6 | 7 | /** 8 | * Created by yueyue on 2017/4/21. 9 | */ 10 | 11 | /** 12 | * application,配置应用色设置 13 | */ 14 | public class MyApplication extends Application { 15 | 16 | @Override 17 | public void onCreate() { 18 | super.onCreate(); 19 | x.Ext.init(this); 20 | x.Ext.setDebug(false); // 是否输出debug日志, 开启debug会影响性能. 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/progressmanager/bean/TaskInfo.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.progressmanager.bean; 2 | 3 | /** 4 | * Created by yueyue on 2017/5/2. 5 | */ 6 | 7 | import android.graphics.drawable.Drawable; 8 | 9 | /**正在运行的App的信息**/ 10 | public class TaskInfo { 11 | 12 | public String appName; 13 | public long appMemory; 14 | /**用来标记app是否被选中*/ 15 | public boolean isChecked; 16 | public Drawable appIcon; 17 | public boolean isUserApp; 18 | public String packageName; 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/progressmanager/bean/TaskInfoParser.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.progressmanager.bean; 2 | 3 | /** 4 | * Created by yueyue on 2017/5/2. 5 | */ 6 | 7 | import android.app.ActivityManager; 8 | import android.app.ActivityManager.RunningAppProcessInfo; 9 | import android.content.Context; 10 | import android.content.pm.ApplicationInfo; 11 | import android.content.pm.PackageInfo; 12 | import android.content.pm.PackageManager; 13 | import android.content.pm.PackageManager.NameNotFoundException; 14 | import android.graphics.drawable.Drawable; 15 | import android.os.Debug.MemoryInfo; 16 | 17 | import com.example.yuemosafe.R; 18 | 19 | import java.util.ArrayList; 20 | import java.util.List; 21 | 22 | /** 23 | * 任务信息 & 进程信息的解析器 24 | * 25 | * @author Administrator 26 | * 27 | */ 28 | public class TaskInfoParser { 29 | 30 | /** 31 | * 获取正在运行的所有的进程的信息。 32 | * @param context 上下文 33 | * @return 进程信息的集合 34 | */ 35 | public static List getRunningTaskInfos(Context context) { 36 | ActivityManager am = (ActivityManager) context 37 | .getSystemService(Context.ACTIVITY_SERVICE); 38 | PackageManager pm = context.getPackageManager(); 39 | List processInfos = am.getRunningAppProcesses(); 40 | List taskInfos = new ArrayList(); 41 | for (RunningAppProcessInfo processInfo : processInfos) { 42 | String packname = processInfo.processName; 43 | TaskInfo taskInfo = new TaskInfo(); 44 | taskInfo.packageName = packname; 45 | MemoryInfo[] memroyinfos = am.getProcessMemoryInfo(new int[]{processInfo.pid}); 46 | long memsize = memroyinfos[0].getTotalPrivateDirty()*1024; 47 | taskInfo.appMemory = memsize; 48 | try { 49 | PackageInfo packInfo = pm.getPackageInfo(packname, 0); 50 | Drawable icon = packInfo.applicationInfo.loadIcon(pm); 51 | taskInfo.appIcon = icon; 52 | String appname = packInfo.applicationInfo.loadLabel(pm).toString(); 53 | taskInfo.appName = appname; 54 | if((ApplicationInfo.FLAG_SYSTEM&packInfo.applicationInfo.flags)!=0){ 55 | //系统进程 56 | taskInfo.isUserApp = false; 57 | }else{ 58 | //用户进程 59 | taskInfo.isUserApp = true; 60 | } 61 | } catch (NameNotFoundException e) { 62 | e.printStackTrace(); 63 | taskInfo.appName = packname; 64 | taskInfo.appIcon = context.getResources().getDrawable(R.drawable.ic_default); 65 | } 66 | 67 | 68 | taskInfos.add(taskInfo); 69 | } 70 | return taskInfos; 71 | } 72 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/progressmanager/service/AutoKillProcessService.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.progressmanager.service; 2 | 3 | import android.app.ActivityManager; 4 | import android.app.Service; 5 | import android.content.BroadcastReceiver; 6 | import android.content.Context; 7 | import android.content.Intent; 8 | import android.content.IntentFilter; 9 | import android.os.IBinder; 10 | 11 | public class AutoKillProcessService extends Service{ 12 | 13 | private ScreenLockReceiver receiver; 14 | @Override 15 | public IBinder onBind(Intent intent) { 16 | return null; 17 | } 18 | 19 | @Override 20 | public void onCreate() { 21 | super.onCreate(); 22 | receiver = new ScreenLockReceiver(); 23 | registerReceiver(receiver, new IntentFilter(Intent.ACTION_SCREEN_OFF)); 24 | } 25 | 26 | @Override 27 | public void onDestroy() { 28 | unregisterReceiver(receiver); 29 | receiver = null; 30 | super.onDestroy(); 31 | } 32 | class ScreenLockReceiver extends BroadcastReceiver { 33 | 34 | @Override 35 | public void onReceive(Context context, Intent intent) { 36 | ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 37 | for(ActivityManager.RunningAppProcessInfo info: am.getRunningAppProcesses()){ 38 | String packname = info.processName; 39 | am.killBackgroundProcesses(packname); 40 | } 41 | } 42 | 43 | } 44 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/scanvirus/adapter/ScanVirusAdapter.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.scanvirus.adapter; 2 | 3 | import android.content.Context; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.BaseAdapter; 7 | import android.widget.ImageView; 8 | import android.widget.TextView; 9 | 10 | import com.example.yuemosafe.R; 11 | import com.example.yuemosafe.activity.scanvirus.bean.ScanAppInfo; 12 | 13 | import java.util.List; 14 | 15 | /** 16 | * Created by yueyue on 2017/4/30. 17 | */ 18 | 19 | public class ScanVirusAdapter extends BaseAdapter { 20 | 21 | private List mScanAppInfos; 22 | private Context context; 23 | 24 | 25 | public ScanVirusAdapter(List scanAppInfo,Context context) { 26 | super(); 27 | mScanAppInfos = scanAppInfo; 28 | this.context = context; 29 | } 30 | @Override 31 | public int getCount() { 32 | return mScanAppInfos.size(); 33 | } 34 | @Override 35 | public ScanAppInfo getItem(int position) { 36 | return mScanAppInfos.get(position); 37 | } 38 | @Override 39 | public long getItemId(int position) { 40 | return position; 41 | } 42 | @Override 43 | public View getView(int position, View convertView, ViewGroup parent) { 44 | ViewHolder holder; 45 | if(convertView == null){ 46 | //由于程序锁的条目与病毒扫描内容基本一致,因此重用程序锁的布局 47 | convertView = View.inflate(context, R.layout.item_list_applock, null); 48 | holder = new ViewHolder(); 49 | holder.mAppIconImgv = (ImageView) convertView.findViewById(R.id.imgv_appicon); 50 | holder.mAppNameTV = (TextView) convertView.findViewById(R.id.tv_appname); 51 | holder.mScanIconImgv = (ImageView) convertView.findViewById(R.id.imgv_lock); 52 | convertView.setTag(holder); 53 | }else{ 54 | holder = (ViewHolder) convertView.getTag(); 55 | } 56 | ScanAppInfo scanAppInfo = getItem(position); 57 | if(!scanAppInfo.isVirus){ 58 | holder.mScanIconImgv.setBackgroundResource(R.drawable.blue_right_icon); 59 | holder.mAppNameTV.setTextColor(context.getResources().getColor(R.color.black)); 60 | holder.mAppNameTV.setText(scanAppInfo.appName); 61 | }else{ 62 | holder.mAppNameTV.setTextColor(context.getResources().getColor(R.color.bright_red)); 63 | holder.mAppNameTV.setText(scanAppInfo.appName+"("+scanAppInfo.description+")"); 64 | } 65 | holder.mAppIconImgv.setImageDrawable(scanAppInfo.appicon); 66 | return convertView; 67 | } 68 | static class ViewHolder{ 69 | ImageView mAppIconImgv; 70 | TextView mAppNameTV; 71 | ImageView mScanIconImgv; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/scanvirus/bean/ScanAppInfo.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.scanvirus.bean; 2 | 3 | import android.graphics.drawable.Drawable; 4 | 5 | /** 6 | * Created by yueyue on 2017/4/30. 7 | */ 8 | 9 | public class ScanAppInfo { 10 | public String appName; 11 | public boolean isVirus; 12 | public String packagename; 13 | public String description; 14 | public Drawable appicon; 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/scanvirus/utils/MD5Utils.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.scanvirus.utils; 2 | 3 | import java.io.File; 4 | import java.io.FileInputStream; 5 | import java.security.MessageDigest; 6 | 7 | /** 8 | * Created by yueyue on 2017/4/30. 9 | */ 10 | 11 | public class MD5Utils { 12 | /** 13 | * 获取文件的md5值, 14 | * @param path 文件的路径 15 | * @return null文件不存在 16 | */ 17 | public static String getFileMd5(String path ){ 18 | try { 19 | MessageDigest digest = MessageDigest.getInstance("md5"); 20 | File file = new File(path); 21 | FileInputStream fis = new FileInputStream(file); 22 | byte[] buffer = new byte[1024]; 23 | int len = -1; 24 | while ((len = fis.read(buffer)) != -1) { 25 | digest.update(buffer,0,len); 26 | } 27 | byte[] result = digest.digest(); 28 | StringBuilder sb =new StringBuilder(); 29 | for(byte b : result){ 30 | int number = b&0xff; 31 | String hex = Integer.toHexString(number); 32 | if(hex.length()==1){ 33 | sb.append("0"+hex); 34 | }else{ 35 | sb.append(hex); 36 | } 37 | } 38 | return sb.toString(); 39 | } catch (Exception e) { 40 | e.printStackTrace(); 41 | return null; 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/securityphone/adapter/ContactAdapter.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.securityphone.adapter; 2 | 3 | import android.content.Context; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.BaseAdapter; 7 | import android.widget.TextView; 8 | 9 | import com.example.yuemosafe.R; 10 | import com.example.yuemosafe.activity.securityphone.bean.ContactInfo; 11 | 12 | import java.util.List; 13 | 14 | /** 15 | * Created by yueyue on 2017/4/26. 16 | */ 17 | 18 | public class ContactAdapter extends BaseAdapter { 19 | 20 | private List contactInfos; 21 | private Context context; 22 | 23 | public ContactAdapter(List systemContacts, Context context) { 24 | super(); 25 | this.contactInfos = systemContacts; 26 | this.context = context; 27 | } 28 | 29 | @Override 30 | public int getCount() { 31 | // TODO Auto-generated method stub 32 | return contactInfos.size(); 33 | } 34 | 35 | @Override 36 | public Object getItem(int position) { 37 | // TODO Auto-generated method stub 38 | return contactInfos.get(position); 39 | } 40 | 41 | @Override 42 | public long getItemId(int position) { 43 | // TODO Auto-generated method stub 44 | return position; 45 | } 46 | 47 | @Override 48 | public View getView(int position, View convertView, ViewGroup parent) { 49 | ViewHolder holder = null; 50 | if (convertView == null) { 51 | convertView = View.inflate(context, 52 | R.layout.item_list_contact_select, null); 53 | holder = new ViewHolder(); 54 | holder.mNameTV = (TextView) convertView.findViewById(R.id.tv_name); 55 | holder.mPhoneTV = (TextView) convertView 56 | .findViewById(R.id.tv_phone); 57 | holder.mContactImgv = convertView.findViewById(R.id.view1); 58 | convertView.setTag(holder); 59 | } else { 60 | holder = (ViewHolder) convertView.getTag(); 61 | } 62 | holder.mNameTV.setText(contactInfos.get(position).name); 63 | holder.mPhoneTV.setText(contactInfos.get(position).phone); 64 | holder.mNameTV.setTextColor(context.getResources().getColor( 65 | R.color.bright_purple)); 66 | holder.mPhoneTV.setTextColor(context.getResources().getColor( 67 | R.color.bright_purple)); 68 | holder.mContactImgv 69 | .setBackgroundResource(R.drawable.brightpurple_contact_icon); 70 | 71 | return convertView; 72 | } 73 | 74 | static class ViewHolder { 75 | TextView mNameTV; 76 | TextView mPhoneTV; 77 | View mContactImgv; 78 | } 79 | } 80 | 81 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/securityphone/bean/BlackContactInfo.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.securityphone.bean; 2 | 3 | /** 4 | * Created by yueyue on 2017/4/26. 5 | */ 6 | public class BlackContactInfo { 7 | /**黑名单号码*/ 8 | public String phoneNumber; 9 | /**黑名单联系人名称*/ 10 | public String contactName; 11 | /**黑名单拦截模式
1为电话拦截 2为短信拦截 3为电话、短信都拦截*/ 12 | public int mode; 13 | 14 | public String getModeString(int mode){ 15 | switch (mode) { 16 | case 1: 17 | return "电话拦截"; 18 | case 2: 19 | 20 | return "短信拦截"; 21 | case 3: 22 | 23 | return "电话、短信拦截"; 24 | 25 | } 26 | return ""; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/securityphone/bean/ContactInfo.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.securityphone.bean; 2 | 3 | public class ContactInfo { 4 | 5 | public String id; 6 | public String name; 7 | public String phone; 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/securityphone/db/BlackNumberOpenHelper.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.securityphone.db; 2 | 3 | import android.content.Context; 4 | import android.database.sqlite.SQLiteDatabase; 5 | import android.database.sqlite.SQLiteOpenHelper; 6 | 7 | /** 8 | * Created by yueyue on 2017/4/26. 9 | */ 10 | 11 | public class BlackNumberOpenHelper extends SQLiteOpenHelper { 12 | public BlackNumberOpenHelper(Context context) { 13 | super(context, "blackNumber.db", null, 1); 14 | } 15 | 16 | @Override 17 | public void onCreate(SQLiteDatabase db) { 18 | db.execSQL("create table blacknumber (_id integer primary key autoincrement, number varchar(20), name varchar(255),mode integer)"); 19 | } 20 | 21 | @Override 22 | public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/securityphone/receiver/InterceptSmsReciever.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.securityphone.receiver; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.content.SharedPreferences; 7 | import android.telephony.SmsMessage; 8 | 9 | import com.example.yuemosafe.activity.securityphone.dao.BlackNumberDao; 10 | 11 | /** 12 | * Created by yueyue on 2017/4/26. 13 | */ 14 | 15 | public class InterceptSmsReciever extends BroadcastReceiver { 16 | 17 | @Override 18 | public void onReceive(Context context, Intent intent) { 19 | SharedPreferences mSP = context.getSharedPreferences("config", 20 | Context.MODE_PRIVATE); 21 | boolean BlackNumStatus = mSP.getBoolean("BlackNumStatus", true); 22 | if (!BlackNumStatus) { 23 | // 黑名单拦截关闭 24 | return; 25 | } 26 | // 如果是黑名单 则终止广播 27 | BlackNumberDao dao = new BlackNumberDao(context); 28 | Object[] objs = (Object[]) intent.getExtras().get("pdus"); 29 | for (Object obj : objs) { 30 | SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) obj); 31 | String sender = smsMessage.getOriginatingAddress(); 32 | String body = smsMessage.getMessageBody(); 33 | if (sender.startsWith("+86")) { 34 | sender = sender.substring(3, sender.length()); 35 | } 36 | int mode = dao.getBlackContactMode(sender); 37 | if (mode == 2 || mode == 3) { 38 | // 需要拦截短信,拦截广播 39 | abortBroadcast(); 40 | } 41 | } 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/settings/utils/SystemInfoUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.settings.utils; 2 | 3 | import android.app.ActivityManager; 4 | import android.content.Context; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * Created by yueyue on 2017/5/5. 10 | */ 11 | 12 | public class SystemInfoUtils { 13 | /** 14 | * 判断一个服务是否处于运行状态 15 | * @param context 上下文 16 | * @return 17 | */ 18 | public static boolean isServiceRunning(Context context, String className){ 19 | ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 20 | List infos = am.getRunningServices(200); 21 | for(ActivityManager.RunningServiceInfo info:infos){ 22 | String serviceClassName = info.service.getClassName(); 23 | if(className.equals(serviceClassName)){ 24 | return true; 25 | } 26 | } 27 | return false; 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/trafficmonitoring/OperatorSetActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.trafficmonitoring; 2 | 3 | import android.content.Intent; 4 | import android.content.SharedPreferences; 5 | import android.os.Bundle; 6 | import android.support.v7.app.AppCompatActivity; 7 | import android.view.View; 8 | import android.view.Window; 9 | import android.widget.ArrayAdapter; 10 | import android.widget.ImageView; 11 | import android.widget.Spinner; 12 | import android.widget.TextView; 13 | 14 | import com.example.yuemosafe.R; 15 | 16 | public class OperatorSetActivity extends AppCompatActivity implements View.OnClickListener { 17 | private Spinner mSelectSP; 18 | private String[] operators = { "中国移动", "中国联通", "中国电信" }; 19 | private ArrayAdapter mSelectadapter; 20 | private SharedPreferences msp; 21 | @Override 22 | protected void onCreate(Bundle savedInstanceState) { 23 | super.onCreate(savedInstanceState); 24 | requestWindowFeature(Window.FEATURE_NO_TITLE); 25 | setContentView(R.layout.activity_operator_set); 26 | msp = getSharedPreferences("config", MODE_PRIVATE); 27 | initView(); 28 | } 29 | @SuppressWarnings("unchecked") 30 | private void initView() { 31 | findViewById(R.id.rl_titlebar).setBackgroundColor( 32 | getResources().getColor(R.color.light_green)); 33 | ImageView mLeftImgv = (ImageView) findViewById(R.id.imgv_leftbtn); 34 | ((TextView) findViewById(R.id.tv_title)).setText("运营商信息设置"); 35 | mLeftImgv.setOnClickListener(this); 36 | mLeftImgv.setImageResource(R.drawable.back); 37 | mSelectSP = (Spinner) findViewById(R.id.spinner_operator_select); 38 | mSelectadapter = new ArrayAdapter(this, 39 | R.layout.item_spinner_operatorset, R.id.tv_provice, operators); 40 | mSelectSP.setAdapter(mSelectadapter); 41 | findViewById(R.id.btn_operator_finish).setOnClickListener(this); 42 | } 43 | @Override 44 | public void onClick(View v) { 45 | SharedPreferences.Editor edit = msp.edit(); 46 | switch (v.getId()) { 47 | case R.id.imgv_leftbtn: 48 | edit.putBoolean("isset_operator", false); 49 | finish(); 50 | break; 51 | case R.id.btn_operator_finish: 52 | edit.putInt("operator", mSelectSP.getSelectedItemPosition() + 1); 53 | edit.putBoolean("isset_operator", true); 54 | edit.commit(); 55 | startActivity(new Intent(this, TrafficMonitoringActivity.class)); 56 | finish(); 57 | break; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/trafficmonitoring/dao/TrafficDao.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.trafficmonitoring.dao; 2 | 3 | import android.content.ContentValues; 4 | import android.content.Context; 5 | import android.database.Cursor; 6 | import android.database.sqlite.SQLiteDatabase; 7 | import android.text.TextUtils; 8 | 9 | import com.example.yuemosafe.activity.trafficmonitoring.db.TrafficOpenHelper; 10 | 11 | import java.text.SimpleDateFormat; 12 | import java.util.Calendar; 13 | import java.util.Date; 14 | 15 | /** 16 | * Created by yueyue on 2017/5/3. 17 | */ 18 | 19 | public class TrafficDao { 20 | private TrafficOpenHelper helper; 21 | 22 | public TrafficDao(Context context) { 23 | helper = new TrafficOpenHelper(context); 24 | } 25 | 26 | /** 27 | * 获取某一天用的流量 28 | * 29 | * @param dataString 30 | * @return 31 | */ 32 | public long getMoblieGPRS(String dataString) { 33 | SQLiteDatabase db = helper.getReadableDatabase(); 34 | long gprs = 0; 35 | Cursor cursor = db.rawQuery("select gprs from traffic where date=?", 36 | new String[] { "datetime(" + dataString + ")" }); 37 | if (cursor.moveToNext()) { 38 | String gprsStr = cursor.getString(0); 39 | if (!TextUtils.isEmpty(gprsStr)) 40 | gprs = Long.parseLong(gprsStr); 41 | } else { 42 | gprs = -1; 43 | } 44 | return gprs; 45 | } 46 | 47 | /*** 48 | * 添加今天的 49 | * 50 | * @param gprs 51 | */ 52 | public void insertTodayGPRS(long gprs) { 53 | SQLiteDatabase db = helper.getReadableDatabase(); 54 | Date dNow = new Date(); 55 | Calendar calendar = Calendar.getInstance(); // 得到日历 56 | calendar.setTime(dNow);// 把当前时间赋给日历 57 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 58 | String dataString = sdf.format(dNow); 59 | ContentValues values = new ContentValues(); 60 | values.put("gprs", String.valueOf(gprs)); 61 | values.put("date", "datetime(" + dataString + ")"); 62 | db.insert("traffic", null, values); 63 | } 64 | 65 | /*** 66 | * 修改今天的 67 | * 68 | * @param gprs 69 | */ 70 | public void UpdateTodayGPRS(long gprs) { 71 | SQLiteDatabase db = helper.getWritableDatabase(); 72 | Date date = new Date(); 73 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 74 | String dataString = sdf.format(date); 75 | ContentValues values = new ContentValues(); 76 | values.put("gprs", String.valueOf(gprs)); 77 | values.put("date", "datetime(" + dataString + ")"); 78 | db.update("traffic", values, "date=?", new String[] { "datetime(" 79 | + dataString + ")" }); 80 | } 81 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/trafficmonitoring/db/TrafficOpenHelper.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.trafficmonitoring.db; 2 | 3 | import android.content.Context; 4 | import android.database.sqlite.SQLiteDatabase; 5 | import android.database.sqlite.SQLiteOpenHelper; 6 | 7 | /** 8 | * Created by yueyue on 2017/5/3. 9 | */ 10 | 11 | public class TrafficOpenHelper extends SQLiteOpenHelper { 12 | private static final String DB_NAME = "traffic.db"; 13 | private static final String TABLE_NAME = "traffic"; 14 | /** 流量 */ 15 | private final static String GPRS = "gprs"; 16 | private final static String TIME = "date"; 17 | 18 | public TrafficOpenHelper(Context context) { 19 | super(context, DB_NAME, null, 1); 20 | } 21 | 22 | @Override 23 | public void onCreate(SQLiteDatabase db) { 24 | db.execSQL("create table " + TABLE_NAME 25 | + "(id integer primary key autoincrement," + GPRS 26 | + " varchar(255)," + TIME + " datetime)"); 27 | } 28 | 29 | @Override 30 | public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 31 | 32 | } 33 | 34 | } -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/trafficmonitoring/receiver/BootCompleteReciever.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.trafficmonitoring.receiver; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | 7 | import com.example.yuemosafe.activity.trafficmonitoring.service.TrafficMonitoringService; 8 | import com.example.yuemosafe.activity.trafficmonitoring.utils.SystemInfoUtils; 9 | 10 | /**监听开机的广播该类,更新数据库,开启服务*/ 11 | public class BootCompleteReciever extends BroadcastReceiver{ 12 | @Override 13 | public void onReceive(Context context, Intent intent) { 14 | //开机广播 15 | //判断流量监控服务是否开启,如果没开启则开启 16 | if(!SystemInfoUtils.isServiceRunning(context,"com.example.yuemosafe.activity.trafficmonitoring.service.TrafficMonitoringService")){ 17 | //开启服务 18 | context.startService(new Intent(context, TrafficMonitoringService.class)); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/yuemosafe/activity/trafficmonitoring/utils/SystemInfoUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.yuemosafe.activity.trafficmonitoring.utils; 2 | 3 | import android.app.ActivityManager; 4 | import android.content.Context; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * Created by yueyue on 2017/5/3. 10 | */ 11 | 12 | public class SystemInfoUtils { 13 | /** 14 | * 判断一个服务是否处于运行状态 15 | * @param context 上下文 16 | * @return 17 | */ 18 | public static boolean isServiceRunning(Context context, String className){ 19 | ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 20 | List infos = am.getRunningServices(200); 21 | for(ActivityManager.RunningServiceInfo info:infos){ 22 | String serviceClassName = info.service.getClassName(); 23 | if(className.equals(serviceClassName)){ 24 | return true; 25 | } 26 | } 27 | return false; 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /app/src/main/res/anim/cycle_7.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/anim/next_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/anim/next_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/anim/pre_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/anim/pre_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/anim/shake.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/add_blackname_btn_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/add_blackname_btn_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/add_blackname_btn_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/add_blackname_btn_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/add_btn_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/add_btn_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/add_btn_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/add_btn_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/add_fromcontact_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/add_fromcontact_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/add_fromcontact_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/add_fromcontact_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/app.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/applock_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/applock_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/appunlock_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/appunlock_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/arrow_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/atools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/atools.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/back.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/bg_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/bg_home.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/blue_right_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/blue_right_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/brightpurple_checkbox_c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/brightpurple_checkbox_c.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/brightpurple_contact_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/brightpurple_contact_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/broom_center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/broom_center.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/broom_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/broom_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/broom_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/broom_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/btn_search_numbelongto_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/btn_search_numbelongto_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/btn_search_numbelongto_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/btn_search_numbelongto_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/cacheclean_trashbin_close_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/cacheclean_trashbin_close_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/cacheclean_trashbin_open_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/cacheclean_trashbin_open_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/cachescan_righticon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/cachescan_righticon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/callmsgsafe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/callmsgsafe.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/cancle_scan_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/cancle_scan_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/cancle_scan_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/cancle_scan_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/checkbox_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/checkbox_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/clean_all_e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/clean_all_e.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/clean_all_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/clean_all_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/clean_all_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/clean_all_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/clean_process_btn_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/clean_process_btn_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/clean_process_btn_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/clean_process_btn_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/cleancache_finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/cleancache_finish.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/coner_white_rec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/coner_white_rec.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/contact_et_left_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/contact_et_left_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/contact_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/contact_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/correction_flow_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/correction_flow_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/correction_flow_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/correction_flow_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/delete_data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/delete_data.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/delete_data_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/delete_data_small.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/delete_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/delete_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/deleteicon_yellow_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/deleteicon_yellow_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/enterpsw_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/enterpsw_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/finish_cleancache_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/finish_cleancache_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/finish_cleancache_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/finish_cleancache_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/go_greenicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/go_greenicon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/green_checkbox_c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/green_checkbox_c.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/green_troggle_c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/green_troggle_c.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/ic_default.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/inverse_btn_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/inverse_btn_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/inverse_btn_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/inverse_btn_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/launch_bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/launch_bg.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/location_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/location_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/location_icon_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/location_icon_small.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/lock_screen_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/lock_screen_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/lock_screen_icon_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/lock_screen_icon_small.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/netmanager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/netmanager.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/no_blacknumbericon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/no_blacknumbericon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/numbelongto_et_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/numbelongto_et_bg.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/numbelongtoicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/numbelongtoicon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/numofbelongto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/numofbelongto.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/operator_finish_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/operator_finish_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/operator_finish_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/operator_finish_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/operator_set_info_incon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/operator_set_info_incon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/operator_spinner_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/operator_spinner_bg.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/phoneicon_yellow_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/phoneicon_yellow_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/processmanager_setting_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/processmanager_setting_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/processmanager_showsysapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/processmanager_showsysapps.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/processmanagerlockscreen_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/processmanagerlockscreen_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/programoflock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/programoflock.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/quickscan_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/quickscan_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/restart_scan_btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/restart_scan_btn.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/right_arrows_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/right_arrows_red.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/rightarrow_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/rightarrow_blue.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/safe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/safe.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/scan_complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/scan_complete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/scanning_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/scanning_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/security_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/security_phone.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/select_all_btn_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/select_all_btn_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/select_all_btn_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/select_all_btn_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/settingicon_yellow_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/settingicon_yellow_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/settings.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/shareicon_yellow_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/shareicon_yellow_n.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/sim_alarm_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/sim_alarm_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/sim_alarm_icon_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/sim_alarm_icon_small.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/slide_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/slide_view.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/sms_backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/sms_backup.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/sms_reduction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/sms_reduction.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smsbackup_button_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/smsbackup_button_bg.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/switch_btn_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/switch_btn_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/swtch_btn_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/swtch_btn_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/sysoptimize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/sysoptimize.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/taskmanager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/taskmanager.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/toggle_btn_blue_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/toggle_btn_blue_p.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/traffic_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/traffic_green.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/traffic_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/traffic_red.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/trojan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/trojan.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/virusscan_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable-hdpi/virusscan_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/add_blacknumber_btn_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/add_btn_selector_securityphone.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/add_fromcontact_btn_selector_securityphone.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/broom_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/btn_numaddressbg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/cacheclean_trash_bin_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/cancle_scan_btn_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/checkbox_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_purple.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_purple_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/cleancache_btn_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/cleanprocess_btn_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/coner_bg_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/correction_flow_btn_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/edit_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable/edit_normal.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/finish_cleancache_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/green_checkbox_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/inverse_btn_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/operator_finish_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/recomand_icon.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable/recomand_icon.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_purple_tv_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/security_phone_setup1.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable/security_phone_setup1.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/select_all_btn_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/set_safephone_icon.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable/set_safephone_icon.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/setup_setting_complete.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable/setup_setting_complete.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/sim_bind_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sim_setup.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable/sim_setup.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/superman.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/drawable/superman.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/toggle_btn_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/toggle_btn_blue_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/toggle_btn_green_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/traffic_green_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/traffic_reminder_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_add_black_number.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_advanced_tools.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 17 | 18 | 19 | 27 | 28 | 29 | 37 | 38 | 39 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_app_lock.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 15 | 23 | 30 | 31 | 32 | 37 | 38 | 43 | 44 | 49 | 50 | 51 | 55 | 56 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_app_manager.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 12 | 17 | 21 | 22 | 25 | 30 | 31 | 32 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_cache_clear_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 13 | 14 | 20 | 21 | 32 | 33 | 42 | 43 | 44 | 49 | 50 | 55 | 56 |