├── .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 |
5 |
6 |
7 |
8 |
9 |
10 |
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 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_contact_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_contact_select.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_contact_select2.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_enter_psw.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
22 |
23 |
30 |
31 |
36 |
44 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
21 |
22 |
33 |
34 |
35 |
38 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_num_belongto.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
21 |
22 |
30 |
31 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_operator_set.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
14 |
15 |
22 |
23 |
27 |
28 |
35 |
36 |
37 |
43 |
44 |
47 |
48 |
56 |
57 |
58 |
59 |
67 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_security_phone.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_securityphone.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
13 |
14 |
18 |
19 |
22 |
23 |
29 |
30 |
38 |
39 |
40 |
41 |
46 |
47 |
53 |
54 |
55 |
56 |
60 |
61 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
16 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_smsbackup.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
14 |
15 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_smsreducition.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
15 |
16 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_splash.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
16 |
17 |
31 |
32 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_virus_scan.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
13 |
18 |
25 |
26 |
27 |
31 |
32 |
39 |
40 |
47 |
54 |
55 |
62 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_virus_scan_speed.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
13 |
14 |
21 |
22 |
30 |
31 |
36 |
37 |
43 |
44 |
45 |
46 |
51 |
52 |
57 |
58 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_applock.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_appunlock.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
12 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/inter_password_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
19 |
24 |
34 |
39 |
40 |
45 |
52 |
56 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_cacheclean_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
21 |
22 |
29 |
30 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
12 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_list_applock.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
22 |
23 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_list_blackcontact.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
16 |
22 |
29 |
30 |
38 |
39 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_list_contact_select.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
16 |
22 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_processmanager_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
25 |
26 |
34 |
35 |
44 |
45 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_spinner_operatorset.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/setup_radiogroup.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
12 |
18 |
25 |
32 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/titlebar.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
22 |
23 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/toggle_btn_blue_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
9 |
10 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/ui_advancedtools_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
13 |
14 |
22 |
23 |
29 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/ui_settings_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
21 |
22 |
32 |
37 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/raw/shimian.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/app/src/main/res/raw/shimian.mp3
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 | #ffffff
7 | #000000
8 | #5542B8
9 | #D1D0CE
10 | #ECEAEB
11 | #30000000
12 | #ff999999
13 | #ff666666
14 | #C218D9
15 | #FEC425
16 | #F22723
17 | #E72993
18 | #F73CA7
19 | #EC9592
20 | #00000000
21 | #4a4be1
22 | #1671CE
23 | #2684DC
24 | #26E587
25 | #55DC28
26 | #E5E5E5
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 小悦安全卫士
3 | Hello world!
4 | Settings
5 | " 绑定SIM卡后,当再次重启手机时,若SIM卡信息发生变化,手机卫士会自动发送报警短信给安全号码!"
6 | 我是设备的超级管理员。开启我之后就可以清除数据,远程锁屏。
7 | 手机卫士管理器
8 | " 仅一次简单设置,以后即可便捷矫正流量,时刻保持与运营商保持精准同步。"
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/device_admin_sample.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/test/java/com/example/yuemosafe/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.example.yuemosafe;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:2.2.1'
9 |
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | jcenter()
18 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/frank7023/second_yuemosafe/3abed15c0a603dcfec88a71d99f3f2c645c3e6fa/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Dec 28 10:00:20 PST 2015
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/使用前必读readme.md:
--------------------------------------------------------------------------------
1 | 本项目是基于传智播客的书籍《Android项目实战-手机安全卫士》,这个pdf(电子版)在百度很多,自行搜索下载哈,个人认为是一个很好的练手项目,入门必备的一个项目,希望可以帮到你哈
2 | 书籍地址:http://resource.boxuegu.com/android_advanced/
3 | 电子版:[Android项目实战-手机安全卫士(高清+目录) - 下载频道 - CSDN.NET](http://download.csdn.net/download/pz0605/9684552)
4 |
--------------------------------------------------------------------------------