package com.ittianyu.mobileguard.activity; import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.fastaccess.permission.base.PermissionHelper; import com.fastaccess.permission.base.callback.OnPermissionCallback; import com.ittianyu.mobileguard.R; import com.ittianyu.mobileguard.activity.base.BaseActivityUpEnable; import com.ittianyu.mobileguard.constant.Constant; import com.ittianyu.mobileguard.service.PhoneSafeService; import com.ittianyu.mobileguard.utils.ActivityManagerUtils; import com.ittianyu.mobileguard.utils.ConfigUtils; import java.util.Arrays; /** * Phone safe setting activity * set the safe phone number * save the sim info * set phone safe service on */ public class PhoneSafeSetting1Activity extends BaseActivityUpEnable implements View.OnClickListener, OnPermissionCallback { // constant private static final int REQUEST_CONTACTS = 1; // view private EditText etSafePhone; // data private PermissionHelper permissionHelper; /** * set title */ public PhoneSafeSetting1Activity() { super(R.string.title_phone_safe_setting1); } /** * 1 */ @Override protected void initView() { setContentView(R.layout.activity_phone_safe_setting1); // bind view etSafePhone = (EditText) findViewById(R.id.et_safe_phone_number); } /** * 2 */ @Override protected void initData() { etSafePhone.setText(ConfigUtils.getString(this, Constant.KEY_SAFE_PHONE, "")); permissionHelper = PermissionHelper.getInstance(this); } /** * 3 */ @Override protected void initEvent() { findViewById(R.id.btn_next).setOnClickListener(this); findViewById(R.id.btn_select_from_contact).setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_next: onFinish(); break; case R.id.btn_select_from_contact: onSelectFromContact(); break; } } /** * start a new activity and finish self * @param activity */ protected void startActivity(Class<? extends Activity> activity) { startActivity(new Intent(this, activity)); finish(); } /** * on select from contact. * It will start a list activity, and wait for result. */ private void onSelectFromContact() { startActivityForResult(new Intent(this, ContactsActivity.class), REQUEST_CONTACTS); } /** * When the ContactsActivity finish, it will be call. * @param requestCode * @param resultCode * @param data */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (REQUEST_CONTACTS == requestCode) { if (data != null) { String safePhone = data.getStringExtra(Constant.KEY_CONTACT_PHONE); etSafePhone.setText(safePhone); } } } /** * On setting finish */ private void onFinish() { System.out.println("onFinish"); // request permission permissionHelper.request(Manifest.permission.READ_PHONE_STATE); } /** * save the safe phone and sim info */ private void saveConfig() { // get safe phone String safePhone = etSafePhone.getText().toString().trim(); if(TextUtils.isEmpty(safePhone)) { Toast.makeText(this, R.string.safe_phone_can_not_be_empty, Toast.LENGTH_SHORT).show(); return; } // save safe phone to file ConfigUtils.putString(this, Constant.KEY_SAFE_PHONE, safePhone); // get sim info TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String simSerialNumber = manager.getSimSerialNumber(); // save sim info ConfigUtils.putString(this, Constant.KEY_SIM_INFO, simSerialNumber); // set service on in config SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor edit = sp.edit(); edit.putBoolean(Constant.KEY_CB_PHONE_SAFE, true) .putBoolean(Constant.KEY_CB_BIND_SIM, true) .commit(); // start the service ActivityManagerUtils.checkService(this, PhoneSafeService.class); // goto PhoneSafeActivity startActivity(PhoneSafeActivity.class); finish(); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { permissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults); } // permission callback start @Override public void onPermissionGranted(@NonNull String[] permissionName) { System.out.println("onPermissionGranted:" + Arrays.toString(permissionName)); saveConfig(); } @Override public void onPermissionDeclined(@NonNull String[] permissionName) { Toast.makeText(this, R.string.no_permission, Toast.LENGTH_SHORT).show(); } @Override public void onPermissionPreGranted(@NonNull String permissionsName) { System.out.println("onPermissionPreGranted:" + permissionsName); onPermissionGranted(new String[]{permissionsName}); } @Override public void onPermissionNeedExplanation(@NonNull String permissionName) { System.out.println("onPermissionNeedExplanation:" + permissionName); } @Override public void onPermissionReallyDeclined(@NonNull String permissionName) { System.out.println("onPermissionReallyDeclined:" + permissionName); } @Override public void onNoPermissionNeeded() { onPermissionGranted(null); } // permission callback end }