Loading res/layout/bluetooth_pin_confirm.xml +11 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,17 @@ android:textColor="@*android:color/secondary_text_material_light" android:visibility="gone" /> <TextView android:id="@+id/phonebook_sharing_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bluetooth_dialog_padding" android:layout_marginEnd="@dimen/bluetooth_dialog_padding" android:layout_marginBottom="@dimen/bluetooth_dialog_padding" android:gravity="center_vertical" android:text="@string/bluetooth_pairing_will_share_phonebook" android:textSize="12sp" /> </LinearLayout> </ScrollView> res/layout/bluetooth_pin_entry.xml +11 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,17 @@ android:gravity="center_vertical" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/phonebook_sharing_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bluetooth_dialog_padding" android:layout_marginEnd="@dimen/bluetooth_dialog_padding" android:layout_marginBottom="@dimen/bluetooth_dialog_padding" android:gravity="center_vertical" android:text="@string/bluetooth_pairing_will_share_phonebook" android:textSize="12sp" /> </LinearLayout> </ScrollView> res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -1165,6 +1165,9 @@ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] --> <string name="bluetooth_pairing_decline">Cancel</string> <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] --> <string name="bluetooth_pairing_will_share_phonebook">Pairing grants access to your contacts and call history when connected.</string> <!-- Title for BT error dialogs. --> <string name="bluetooth_error_title"></string> <!-- Message for the error dialog when BT pairing fails generically. --> Loading src/com/android/settings/bluetooth/BluetoothPairingDialog.java +35 −20 Original line number Diff line number Diff line Loading @@ -55,6 +55,9 @@ public final class BluetoothPairingDialog extends AlertActivity implements private static final int BLUETOOTH_PIN_MAX_LENGTH = 16; private static final int BLUETOOTH_PASSKEY_MAX_LENGTH = 6; private LocalBluetoothManager mBluetoothManager; private CachedBluetoothDeviceManager mCachedDeviceManager; private BluetoothDevice mDevice; private int mType; private String mPairingKey; Loading Loading @@ -98,13 +101,13 @@ public final class BluetoothPairingDialog extends AlertActivity implements return; } LocalBluetoothManager manager = LocalBluetoothManager.getInstance(this); if (manager == null) { mBluetoothManager = LocalBluetoothManager.getInstance(this); if (mBluetoothManager == null) { Log.e(TAG, "Error: BluetoothAdapter not supported by system"); finish(); return; } CachedBluetoothDeviceManager deviceManager = manager.getCachedDeviceManager(); mCachedDeviceManager = mBluetoothManager.getCachedDeviceManager(); mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); mType = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR); Loading @@ -112,7 +115,7 @@ public final class BluetoothPairingDialog extends AlertActivity implements switch (mType) { case BluetoothDevice.PAIRING_VARIANT_PIN: case BluetoothDevice.PAIRING_VARIANT_PASSKEY: createUserEntryDialog(deviceManager); createUserEntryDialog(); break; case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION: Loading @@ -123,12 +126,12 @@ public final class BluetoothPairingDialog extends AlertActivity implements return; } mPairingKey = String.format(Locale.US, "%06d", passkey); createConfirmationDialog(deviceManager); createConfirmationDialog(); break; case BluetoothDevice.PAIRING_VARIANT_CONSENT: case BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT: createConsentDialog(deviceManager); createConsentDialog(); break; case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY: Loading @@ -144,7 +147,7 @@ public final class BluetoothPairingDialog extends AlertActivity implements } else { mPairingKey = String.format("%04d", pairingKey); } createDisplayPasskeyOrPinDialog(deviceManager); createDisplayPasskeyOrPinDialog(); break; default: Loading @@ -159,10 +162,10 @@ public final class BluetoothPairingDialog extends AlertActivity implements registerReceiver(mReceiver, new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED)); } private void createUserEntryDialog(CachedBluetoothDeviceManager deviceManager) { private void createUserEntryDialog() { final AlertController.AlertParams p = mAlertParams; p.mTitle = getString(R.string.bluetooth_pairing_request); p.mView = createPinEntryView(deviceManager.getName(mDevice)); p.mView = createPinEntryView(); p.mPositiveButtonText = getString(android.R.string.ok); p.mPositiveButtonListener = this; p.mNegativeButtonText = getString(android.R.string.cancel); Loading @@ -173,7 +176,7 @@ public final class BluetoothPairingDialog extends AlertActivity implements mOkButton.setEnabled(false); } private View createPinEntryView(String deviceName) { private View createPinEntryView() { View view = getLayoutInflater().inflate(R.layout.bluetooth_pin_entry, null); TextView messageViewCaption = (TextView) view.findViewById(R.id.message_caption); TextView messageViewContent = (TextView) view.findViewById(R.id.message_subhead); Loading Loading @@ -208,7 +211,7 @@ public final class BluetoothPairingDialog extends AlertActivity implements } messageViewCaption.setText(messageId1); messageViewContent.setText(deviceName); messageViewContent.setText(mCachedDeviceManager.getName(mDevice)); messageView2.setText(messageId2); mPairingView.setInputType(InputType.TYPE_CLASS_NUMBER); mPairingView.setFilters(new InputFilter[] { Loading @@ -217,10 +220,10 @@ public final class BluetoothPairingDialog extends AlertActivity implements return view; } private View createView(CachedBluetoothDeviceManager deviceManager) { private View createView() { View view = getLayoutInflater().inflate(R.layout.bluetooth_pin_confirm, null); // Escape device name to avoid HTML injection. String name = Html.escapeHtml(deviceManager.getName(mDevice)); String name = Html.escapeHtml(mCachedDeviceManager.getName(mDevice)); TextView messageViewCaption = (TextView) view.findViewById(R.id.message_caption); TextView messageViewContent = (TextView) view.findViewById(R.id.message_subhead); TextView pairingViewCaption = (TextView) view.findViewById(R.id.pairing_caption); Loading Loading @@ -262,10 +265,10 @@ public final class BluetoothPairingDialog extends AlertActivity implements return view; } private void createConfirmationDialog(CachedBluetoothDeviceManager deviceManager) { private void createConfirmationDialog() { final AlertController.AlertParams p = mAlertParams; p.mTitle = getString(R.string.bluetooth_pairing_request); p.mView = createView(deviceManager); p.mView = createView(); p.mPositiveButtonText = getString(R.string.bluetooth_pairing_accept); p.mPositiveButtonListener = this; p.mNegativeButtonText = getString(R.string.bluetooth_pairing_decline); Loading @@ -273,10 +276,10 @@ public final class BluetoothPairingDialog extends AlertActivity implements setupAlert(); } private void createConsentDialog(CachedBluetoothDeviceManager deviceManager) { private void createConsentDialog() { final AlertController.AlertParams p = mAlertParams; p.mTitle = getString(R.string.bluetooth_pairing_request); p.mView = createView(deviceManager); p.mView = createView(); p.mPositiveButtonText = getString(R.string.bluetooth_pairing_accept); p.mPositiveButtonListener = this; p.mNegativeButtonText = getString(R.string.bluetooth_pairing_decline); Loading @@ -284,11 +287,10 @@ public final class BluetoothPairingDialog extends AlertActivity implements setupAlert(); } private void createDisplayPasskeyOrPinDialog( CachedBluetoothDeviceManager deviceManager) { private void createDisplayPasskeyOrPinDialog() { final AlertController.AlertParams p = mAlertParams; p.mTitle = getString(R.string.bluetooth_pairing_request); p.mView = createView(deviceManager); p.mView = createView(); p.mNegativeButtonText = getString(android.R.string.cancel); p.mNegativeButtonListener = this; setupAlert(); Loading @@ -315,7 +317,20 @@ public final class BluetoothPairingDialog extends AlertActivity implements } } private void allowPhonebookAccess() { CachedBluetoothDevice cachedDevice = mCachedDeviceManager.findDevice(mDevice); if (cachedDevice == null) { cachedDevice = mCachedDeviceManager.addDevice( mBluetoothManager.getBluetoothAdapter(), mBluetoothManager.getProfileManager(), mDevice); } cachedDevice.setPhonebookPermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED); } private void onPair(String value) { allowPhonebookAccess(); switch (mType) { case BluetoothDevice.PAIRING_VARIANT_PIN: byte[] pinBytes = BluetoothDevice.convertPinToBytes(value); Loading src/com/android/settings/bluetooth/CachedBluetoothDevice.java +0 −33 Original line number Diff line number Diff line Loading @@ -68,8 +68,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { private int mMessagePermissionChoice; private int mPhonebookRejectedTimes; private int mMessageRejectedTimes; private final Collection<Callback> mCallbacks = new ArrayList<Callback>(); Loading @@ -87,7 +85,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { private final static String PHONEBOOK_PREFS_NAME = "bluetooth_phonebook_permission"; private final static String MESSAGE_PREFS_NAME = "bluetooth_message_permission"; private final static String PHONEBOOK_REJECT_TIMES = "bluetooth_phonebook_reject"; private final static String MESSAGE_REJECT_TIMES = "bluetooth_message_reject"; /** Loading Loading @@ -372,7 +369,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { updateProfiles(); fetchPhonebookPermissionChoice(); fetchMessagePermissionChoice(); fetchPhonebookRejectTimes(); fetchMessageRejectTimes(); mVisible = false; Loading Loading @@ -541,8 +537,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { mConnectAfterPairing = false; // cancel auto-connect setPhonebookPermissionChoice(ACCESS_UNKNOWN); setMessagePermissionChoice(ACCESS_UNKNOWN); mPhonebookRejectedTimes = 0; savePhonebookRejectTimes(); mMessageRejectedTimes = 0; saveMessageRejectTimes(); } Loading Loading @@ -661,15 +655,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { } void setPhonebookPermissionChoice(int permissionChoice) { // if user reject it, only save it when reject exceed limit. if (permissionChoice == ACCESS_REJECTED) { mPhonebookRejectedTimes++; savePhonebookRejectTimes(); if (mPhonebookRejectedTimes < PERSIST_REJECTED_TIMES_LIMIT) { return; } } mPhonebookPermissionChoice = permissionChoice; SharedPreferences.Editor editor = Loading @@ -689,24 +674,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { ACCESS_UNKNOWN); } private void fetchPhonebookRejectTimes() { SharedPreferences preference = mContext.getSharedPreferences(PHONEBOOK_REJECT_TIMES, Context.MODE_PRIVATE); mPhonebookRejectedTimes = preference.getInt(mDevice.getAddress(), 0); } private void savePhonebookRejectTimes() { SharedPreferences.Editor editor = mContext.getSharedPreferences(PHONEBOOK_REJECT_TIMES, Context.MODE_PRIVATE).edit(); if (mPhonebookRejectedTimes == 0) { editor.remove(mDevice.getAddress()); } else { editor.putInt(mDevice.getAddress(), mPhonebookRejectedTimes); } editor.commit(); } int getMessagePermissionChoice() { return mMessagePermissionChoice; } Loading Loading
res/layout/bluetooth_pin_confirm.xml +11 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,17 @@ android:textColor="@*android:color/secondary_text_material_light" android:visibility="gone" /> <TextView android:id="@+id/phonebook_sharing_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bluetooth_dialog_padding" android:layout_marginEnd="@dimen/bluetooth_dialog_padding" android:layout_marginBottom="@dimen/bluetooth_dialog_padding" android:gravity="center_vertical" android:text="@string/bluetooth_pairing_will_share_phonebook" android:textSize="12sp" /> </LinearLayout> </ScrollView>
res/layout/bluetooth_pin_entry.xml +11 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,17 @@ android:gravity="center_vertical" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/phonebook_sharing_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/bluetooth_dialog_padding" android:layout_marginEnd="@dimen/bluetooth_dialog_padding" android:layout_marginBottom="@dimen/bluetooth_dialog_padding" android:gravity="center_vertical" android:text="@string/bluetooth_pairing_will_share_phonebook" android:textSize="12sp" /> </LinearLayout> </ScrollView>
res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -1165,6 +1165,9 @@ <!-- Button text for declining an incoming pairing request. [CHAR LIMIT=20] --> <string name="bluetooth_pairing_decline">Cancel</string> <!-- Message in pairing dialogs. [CHAR LIMIT=NONE] --> <string name="bluetooth_pairing_will_share_phonebook">Pairing grants access to your contacts and call history when connected.</string> <!-- Title for BT error dialogs. --> <string name="bluetooth_error_title"></string> <!-- Message for the error dialog when BT pairing fails generically. --> Loading
src/com/android/settings/bluetooth/BluetoothPairingDialog.java +35 −20 Original line number Diff line number Diff line Loading @@ -55,6 +55,9 @@ public final class BluetoothPairingDialog extends AlertActivity implements private static final int BLUETOOTH_PIN_MAX_LENGTH = 16; private static final int BLUETOOTH_PASSKEY_MAX_LENGTH = 6; private LocalBluetoothManager mBluetoothManager; private CachedBluetoothDeviceManager mCachedDeviceManager; private BluetoothDevice mDevice; private int mType; private String mPairingKey; Loading Loading @@ -98,13 +101,13 @@ public final class BluetoothPairingDialog extends AlertActivity implements return; } LocalBluetoothManager manager = LocalBluetoothManager.getInstance(this); if (manager == null) { mBluetoothManager = LocalBluetoothManager.getInstance(this); if (mBluetoothManager == null) { Log.e(TAG, "Error: BluetoothAdapter not supported by system"); finish(); return; } CachedBluetoothDeviceManager deviceManager = manager.getCachedDeviceManager(); mCachedDeviceManager = mBluetoothManager.getCachedDeviceManager(); mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); mType = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR); Loading @@ -112,7 +115,7 @@ public final class BluetoothPairingDialog extends AlertActivity implements switch (mType) { case BluetoothDevice.PAIRING_VARIANT_PIN: case BluetoothDevice.PAIRING_VARIANT_PASSKEY: createUserEntryDialog(deviceManager); createUserEntryDialog(); break; case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION: Loading @@ -123,12 +126,12 @@ public final class BluetoothPairingDialog extends AlertActivity implements return; } mPairingKey = String.format(Locale.US, "%06d", passkey); createConfirmationDialog(deviceManager); createConfirmationDialog(); break; case BluetoothDevice.PAIRING_VARIANT_CONSENT: case BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT: createConsentDialog(deviceManager); createConsentDialog(); break; case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY: Loading @@ -144,7 +147,7 @@ public final class BluetoothPairingDialog extends AlertActivity implements } else { mPairingKey = String.format("%04d", pairingKey); } createDisplayPasskeyOrPinDialog(deviceManager); createDisplayPasskeyOrPinDialog(); break; default: Loading @@ -159,10 +162,10 @@ public final class BluetoothPairingDialog extends AlertActivity implements registerReceiver(mReceiver, new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED)); } private void createUserEntryDialog(CachedBluetoothDeviceManager deviceManager) { private void createUserEntryDialog() { final AlertController.AlertParams p = mAlertParams; p.mTitle = getString(R.string.bluetooth_pairing_request); p.mView = createPinEntryView(deviceManager.getName(mDevice)); p.mView = createPinEntryView(); p.mPositiveButtonText = getString(android.R.string.ok); p.mPositiveButtonListener = this; p.mNegativeButtonText = getString(android.R.string.cancel); Loading @@ -173,7 +176,7 @@ public final class BluetoothPairingDialog extends AlertActivity implements mOkButton.setEnabled(false); } private View createPinEntryView(String deviceName) { private View createPinEntryView() { View view = getLayoutInflater().inflate(R.layout.bluetooth_pin_entry, null); TextView messageViewCaption = (TextView) view.findViewById(R.id.message_caption); TextView messageViewContent = (TextView) view.findViewById(R.id.message_subhead); Loading Loading @@ -208,7 +211,7 @@ public final class BluetoothPairingDialog extends AlertActivity implements } messageViewCaption.setText(messageId1); messageViewContent.setText(deviceName); messageViewContent.setText(mCachedDeviceManager.getName(mDevice)); messageView2.setText(messageId2); mPairingView.setInputType(InputType.TYPE_CLASS_NUMBER); mPairingView.setFilters(new InputFilter[] { Loading @@ -217,10 +220,10 @@ public final class BluetoothPairingDialog extends AlertActivity implements return view; } private View createView(CachedBluetoothDeviceManager deviceManager) { private View createView() { View view = getLayoutInflater().inflate(R.layout.bluetooth_pin_confirm, null); // Escape device name to avoid HTML injection. String name = Html.escapeHtml(deviceManager.getName(mDevice)); String name = Html.escapeHtml(mCachedDeviceManager.getName(mDevice)); TextView messageViewCaption = (TextView) view.findViewById(R.id.message_caption); TextView messageViewContent = (TextView) view.findViewById(R.id.message_subhead); TextView pairingViewCaption = (TextView) view.findViewById(R.id.pairing_caption); Loading Loading @@ -262,10 +265,10 @@ public final class BluetoothPairingDialog extends AlertActivity implements return view; } private void createConfirmationDialog(CachedBluetoothDeviceManager deviceManager) { private void createConfirmationDialog() { final AlertController.AlertParams p = mAlertParams; p.mTitle = getString(R.string.bluetooth_pairing_request); p.mView = createView(deviceManager); p.mView = createView(); p.mPositiveButtonText = getString(R.string.bluetooth_pairing_accept); p.mPositiveButtonListener = this; p.mNegativeButtonText = getString(R.string.bluetooth_pairing_decline); Loading @@ -273,10 +276,10 @@ public final class BluetoothPairingDialog extends AlertActivity implements setupAlert(); } private void createConsentDialog(CachedBluetoothDeviceManager deviceManager) { private void createConsentDialog() { final AlertController.AlertParams p = mAlertParams; p.mTitle = getString(R.string.bluetooth_pairing_request); p.mView = createView(deviceManager); p.mView = createView(); p.mPositiveButtonText = getString(R.string.bluetooth_pairing_accept); p.mPositiveButtonListener = this; p.mNegativeButtonText = getString(R.string.bluetooth_pairing_decline); Loading @@ -284,11 +287,10 @@ public final class BluetoothPairingDialog extends AlertActivity implements setupAlert(); } private void createDisplayPasskeyOrPinDialog( CachedBluetoothDeviceManager deviceManager) { private void createDisplayPasskeyOrPinDialog() { final AlertController.AlertParams p = mAlertParams; p.mTitle = getString(R.string.bluetooth_pairing_request); p.mView = createView(deviceManager); p.mView = createView(); p.mNegativeButtonText = getString(android.R.string.cancel); p.mNegativeButtonListener = this; setupAlert(); Loading @@ -315,7 +317,20 @@ public final class BluetoothPairingDialog extends AlertActivity implements } } private void allowPhonebookAccess() { CachedBluetoothDevice cachedDevice = mCachedDeviceManager.findDevice(mDevice); if (cachedDevice == null) { cachedDevice = mCachedDeviceManager.addDevice( mBluetoothManager.getBluetoothAdapter(), mBluetoothManager.getProfileManager(), mDevice); } cachedDevice.setPhonebookPermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED); } private void onPair(String value) { allowPhonebookAccess(); switch (mType) { case BluetoothDevice.PAIRING_VARIANT_PIN: byte[] pinBytes = BluetoothDevice.convertPinToBytes(value); Loading
src/com/android/settings/bluetooth/CachedBluetoothDevice.java +0 −33 Original line number Diff line number Diff line Loading @@ -68,8 +68,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { private int mMessagePermissionChoice; private int mPhonebookRejectedTimes; private int mMessageRejectedTimes; private final Collection<Callback> mCallbacks = new ArrayList<Callback>(); Loading @@ -87,7 +85,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { private final static String PHONEBOOK_PREFS_NAME = "bluetooth_phonebook_permission"; private final static String MESSAGE_PREFS_NAME = "bluetooth_message_permission"; private final static String PHONEBOOK_REJECT_TIMES = "bluetooth_phonebook_reject"; private final static String MESSAGE_REJECT_TIMES = "bluetooth_message_reject"; /** Loading Loading @@ -372,7 +369,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { updateProfiles(); fetchPhonebookPermissionChoice(); fetchMessagePermissionChoice(); fetchPhonebookRejectTimes(); fetchMessageRejectTimes(); mVisible = false; Loading Loading @@ -541,8 +537,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { mConnectAfterPairing = false; // cancel auto-connect setPhonebookPermissionChoice(ACCESS_UNKNOWN); setMessagePermissionChoice(ACCESS_UNKNOWN); mPhonebookRejectedTimes = 0; savePhonebookRejectTimes(); mMessageRejectedTimes = 0; saveMessageRejectTimes(); } Loading Loading @@ -661,15 +655,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { } void setPhonebookPermissionChoice(int permissionChoice) { // if user reject it, only save it when reject exceed limit. if (permissionChoice == ACCESS_REJECTED) { mPhonebookRejectedTimes++; savePhonebookRejectTimes(); if (mPhonebookRejectedTimes < PERSIST_REJECTED_TIMES_LIMIT) { return; } } mPhonebookPermissionChoice = permissionChoice; SharedPreferences.Editor editor = Loading @@ -689,24 +674,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { ACCESS_UNKNOWN); } private void fetchPhonebookRejectTimes() { SharedPreferences preference = mContext.getSharedPreferences(PHONEBOOK_REJECT_TIMES, Context.MODE_PRIVATE); mPhonebookRejectedTimes = preference.getInt(mDevice.getAddress(), 0); } private void savePhonebookRejectTimes() { SharedPreferences.Editor editor = mContext.getSharedPreferences(PHONEBOOK_REJECT_TIMES, Context.MODE_PRIVATE).edit(); if (mPhonebookRejectedTimes == 0) { editor.remove(mDevice.getAddress()); } else { editor.putInt(mDevice.getAddress(), mPhonebookRejectedTimes); } editor.commit(); } int getMessagePermissionChoice() { return mMessagePermissionChoice; } Loading