Merge "Fix NullPointerException to get sim accounts"

This commit is contained in:
Marcus Hagerott
2023-03-30 16:42:11 +00:00
committed by Gerrit Code Review

View File

@@ -8410,7 +8410,7 @@ public final class ContactsContract {
extras.putString(KEY_ACCOUNT_NAME, accountName); extras.putString(KEY_ACCOUNT_NAME, accountName);
extras.putString(KEY_ACCOUNT_TYPE, accountType); extras.putString(KEY_ACCOUNT_TYPE, accountType);
contentResolver.call(ContactsContract.AUTHORITY_URI, nullSafeCall(contentResolver, ContactsContract.AUTHORITY_URI,
ContactsContract.SimContacts.ADD_SIM_ACCOUNT_METHOD, ContactsContract.SimContacts.ADD_SIM_ACCOUNT_METHOD,
null, extras); null, extras);
} }
@@ -8433,7 +8433,7 @@ public final class ContactsContract {
Bundle extras = new Bundle(); Bundle extras = new Bundle();
extras.putInt(KEY_SIM_SLOT_INDEX, simSlotIndex); extras.putInt(KEY_SIM_SLOT_INDEX, simSlotIndex);
contentResolver.call(ContactsContract.AUTHORITY_URI, nullSafeCall(contentResolver, ContactsContract.AUTHORITY_URI,
ContactsContract.SimContacts.REMOVE_SIM_ACCOUNT_METHOD, ContactsContract.SimContacts.REMOVE_SIM_ACCOUNT_METHOD,
null, extras); null, extras);
} }
@@ -8445,7 +8445,7 @@ public final class ContactsContract {
*/ */
public static @NonNull List<SimAccount> getSimAccounts( public static @NonNull List<SimAccount> getSimAccounts(
@NonNull ContentResolver contentResolver) { @NonNull ContentResolver contentResolver) {
Bundle response = contentResolver.call(ContactsContract.AUTHORITY_URI, Bundle response = nullSafeCall(contentResolver, ContactsContract.AUTHORITY_URI,
ContactsContract.SimContacts.QUERY_SIM_ACCOUNTS_METHOD, ContactsContract.SimContacts.QUERY_SIM_ACCOUNTS_METHOD,
null, null); null, null);
List<SimAccount> result = response.getParcelableArrayList(KEY_SIM_ACCOUNTS); List<SimAccount> result = response.getParcelableArrayList(KEY_SIM_ACCOUNTS);
@@ -9064,7 +9064,8 @@ public final class ContactsContract {
* @param contactId the id of the contact to undemote. * @param contactId the id of the contact to undemote.
*/ */
public static void undemote(ContentResolver contentResolver, long contactId) { public static void undemote(ContentResolver contentResolver, long contactId) {
contentResolver.call(ContactsContract.AUTHORITY_URI, PinnedPositions.UNDEMOTE_METHOD, nullSafeCall(contentResolver, ContactsContract.AUTHORITY_URI,
PinnedPositions.UNDEMOTE_METHOD,
String.valueOf(contactId), null); String.valueOf(contactId), null);
} }
@@ -10276,4 +10277,13 @@ public final class ContactsContract {
public static final String CONTENT_ITEM_TYPE = public static final String CONTENT_ITEM_TYPE =
"vnd.android.cursor.item/contact_metadata_sync_state"; "vnd.android.cursor.item/contact_metadata_sync_state";
} }
private static Bundle nullSafeCall(@NonNull ContentResolver resolver, @NonNull Uri uri,
@NonNull String method, @Nullable String arg, @Nullable Bundle extras) {
try (ContentProviderClient client = resolver.acquireContentProviderClient(uri)) {
return client.call(method, arg, extras);
} catch (RemoteException e) {
throw e.rethrowAsRuntimeException();
}
}
} }