summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-02-12 05:41:31 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2015-02-12 05:41:31 -0800
commit08981f519f42aad5eefb274df6f35d724a32019c (patch)
tree666bc935df43db8cbd1e9b838cf381505cbdb7ae
parent448e380112db3527cfe47721689128d77bea63d6 (diff)
parentfa397f3fad634fdde390500bfc0a6abf0a36e1b4 (diff)
downloadpackages_apps_Contacts-08981f519f42aad5eefb274df6f35d724a32019c.tar.gz
packages_apps_Contacts-08981f519f42aad5eefb274df6f35d724a32019c.tar.bz2
packages_apps_Contacts-08981f519f42aad5eefb274df6f35d724a32019c.zip
Merge "Contants: Modify ANR in group detial,when group has 500 member"
-rw-r--r--src/com/android/contacts/group/GroupDetailFragment.java43
-rw-r--r--src/com/android/contacts/util/RCSUtil.java105
2 files changed, 85 insertions, 63 deletions
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index 1d2d70d59..43dbed247 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -305,27 +305,40 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener {
updateSize(data.getCount());
mAdapter.setContactCursor(data);
mMemberListView.setEmptyView(mEmptyView);
- // For starting RCS group-chat.
- StringBuilder sb = new StringBuilder();
- mGroupMembersPhonesList.clear();
- while(data.moveToNext()){
- Long id = data.getLong(0);
- String phoneNumber = RCSUtil.getPhoneforContactId(mContext, id);
- sb.append(phoneNumber).append(";");
- String[] groupMemberPhones = RCSUtil.getAllPhoneNumberFromContactId(mContext, id)
- .split(";");
- for (int i = 0 ; i < groupMemberPhones.length; i++) {
- mGroupMembersPhonesList.add(RCSUtil.getFormatNumber(groupMemberPhones[i]));
- }
- }
- Log.d(TAG,"mGroupMembersPhonesList:"+mGroupMembersPhonesList.toString());
- mGroupMembersPhones = sb.toString();
+ getGroupMemberPhoneNumber(data);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {}
};
+ private void getGroupMemberPhoneNumber(final Cursor data) {
+ new Thread () {
+ @Override
+ public void run() {
+ // For starting RCS group-chat.
+ StringBuilder sb = new StringBuilder();
+ mGroupMembersPhonesList.clear();
+ while (data.moveToNext()) {
+ Long id = data.getLong(0);
+ String phoneNumber = RCSUtil.getPhoneforContactId(mContext,
+ id);
+ sb.append(phoneNumber).append(";");
+ String[] groupMemberPhones = RCSUtil
+ .getAllPhoneNumberFromContactId(mContext, id)
+ .split(";");
+ for (int i = 0; i < groupMemberPhones.length; i++) {
+ mGroupMembersPhonesList.add(RCSUtil
+ .getFormatNumber(groupMemberPhones[i]));
+ }
+ }
+ Log.d(TAG,"mGroupMembersPhonesList:"
+ + mGroupMembersPhonesList.toString());
+ mGroupMembersPhones = sb.toString();
+ }
+ }.start();
+ }
+
private void bindGroupMetaData(Cursor cursor) {
cursor.moveToPosition(-1);
if (cursor.moveToNext()) {
diff --git a/src/com/android/contacts/util/RCSUtil.java b/src/com/android/contacts/util/RCSUtil.java
index a630ac99a..b23e19516 100644
--- a/src/com/android/contacts/util/RCSUtil.java
+++ b/src/com/android/contacts/util/RCSUtil.java
@@ -2585,72 +2585,81 @@ public class RCSUtil {
public static String getPhoneforContactId(Context context, long contactId) {
- String phone = null;
+ String phone = "";
Cursor phonesCursor = null;
phonesCursor = RCSUtil.queryPhoneNumbers(context, contactId);
- if (phonesCursor == null) {
- return "";
- }
- if (phonesCursor.getCount() == 0) {
- // No valid number
- // signalError();
- return phone;
- } else if (phonesCursor.getCount() == 1) {
- // only one number, call it.
- phone = phonesCursor.getString(phonesCursor
- .getColumnIndex(Phone.NUMBER));
- } else {
- phonesCursor.moveToPosition(-1);
- boolean first = true;
- while (phonesCursor.moveToNext()) {
- if (first) {
- //
+ try {
+ if(null != phonesCursor) {
+ if (phonesCursor.getCount() == 0) {
+ // No valid number
+ // signalError();
+ if (!phonesCursor.isClosed()) {
+ phonesCursor.close();
+ }
+ return phone;
+ } else if (phonesCursor.getCount() == 1) {
+ // only one number, call it.
phone = phonesCursor.getString(phonesCursor
.getColumnIndex(Phone.NUMBER));
- first = false;
- }
- if (phonesCursor.getInt(phonesCursor.getColumnIndex
+ } else {
+ phonesCursor.moveToPosition(-1);
+ boolean first = true;
+ while (phonesCursor.moveToNext()) {
+ if (first) {
+ //
+ phone = phonesCursor.getString(phonesCursor
+ .getColumnIndex(Phone.NUMBER));
+ first = false;
+ }
+ if (phonesCursor.getInt(phonesCursor.getColumnIndex
- (Phone.IS_SUPER_PRIMARY)) != 0) {
- // Found super primary, call it.
- phone = phonesCursor.getString(phonesCursor
- .getColumnIndex(Phone.NUMBER));
- break;
+ (Phone.IS_SUPER_PRIMARY)) != 0) {
+ // Found super primary, call it.
+ phone = phonesCursor.getString(phonesCursor
+ .getColumnIndex(Phone.NUMBER));
+ break;
+ }
+ }
}
}
+ } finally {
+ if (null != phonesCursor) {
+ phonesCursor.close();
+ }
}
- phonesCursor.close();
return phone;
}
public static String getAllPhoneNumberFromContactId(Context context, long contactId) {
- String phone = null;
+ String phone = "";
Cursor phonesCursor = null;
StringBuilder sb = new StringBuilder();
phonesCursor = RCSUtil.queryPhoneNumbers(context, contactId);
- if (phonesCursor == null) {
- return "";
- }
- if (phonesCursor.getCount() == 0) {
- // No valid number
- // signalError();
- phonesCursor.close();
- return phone;
- } else if (phonesCursor.getCount() == 1) {
- // only one number, call it.
- phone = phonesCursor.getString(phonesCursor
- .getColumnIndex(Phone.NUMBER));
- } else {
- while (phonesCursor.moveToNext()) {
- //
- phone = phonesCursor.getString(phonesCursor
- .getColumnIndex(Phone.NUMBER));
- sb.append(phone).append(";");
+
+ try {
+ if (phonesCursor != null) {
+ if (phonesCursor.getCount() == 0) {
+ phone = "";
+ } else if (phonesCursor.getCount() == 1) {
+ // only one number, call it.
+ phone = phonesCursor.getString(phonesCursor
+ .getColumnIndex(Phone.NUMBER));
+ } else {
+ while (phonesCursor.moveToNext()) {
+ phone = phonesCursor.getString(phonesCursor
+ .getColumnIndex(Phone.NUMBER));
+ sb.append(phone).append(";");
+ }
+ phone = sb.toString();
+ }
}
- phone = sb.toString();
+ } finally {
+ if (null != phonesCursor) {
+ phonesCursor.close();
+ }
+
}
- phonesCursor.close();
return phone;
}