diff options
Diffstat (limited to 'src')
7 files changed, 55 insertions, 18 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java index 42cbbf4c1..82d5c3fee 100644 --- a/src/com/android/dialer/DialtactsActivity.java +++ b/src/com/android/dialer/DialtactsActivity.java @@ -144,6 +144,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O // Padding view used to shift the fragments up when the dialpad is shown. private View mBottomPaddingView; private View mFragmentsFrame; + private View mActionBar; private boolean mInDialpadSearch; private boolean mInRegularSearch; @@ -302,6 +303,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O mBottomPaddingView = findViewById(R.id.dialtacts_bottom_padding); mFragmentsFrame = findViewById(R.id.dialtacts_frame); + mActionBar = findViewById(R.id.fake_action_bar); prepareSearchView(); if (UI.FILTER_CONTACTS_ACTION.equals(intent.getAction()) @@ -547,11 +549,13 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O @Override public void onAnimationEnd(Animator animation) { mBottomPaddingView.setVisibility(View.VISIBLE); - mFragmentsFrame.setTranslationY(0); + mFragmentsFrame.setTranslationY(0); + mActionBar.setVisibility(View.INVISIBLE); } }); } else { mSearchViewContainer.setTranslationY(-mSearchView.getHeight()); + mActionBar.setVisibility(View.INVISIBLE); } } @@ -564,6 +568,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O @Override public void onAnimationStart(Animator animation) { mSearchViewContainer.setVisibility(View.VISIBLE); + mActionBar.setVisibility(View.VISIBLE); } }); diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java index b2e520632..9392410d1 100644 --- a/src/com/android/dialer/calllog/CallLogAdapter.java +++ b/src/com/android/dialer/calllog/CallLogAdapter.java @@ -195,26 +195,27 @@ public class CallLogAdapter extends GroupingListAdapter private ImageView mBadgeImageView; private TextView mBadgeText; - /** Listener for the primary action in the list, opens the call details. */ - private final View.OnClickListener mPrimaryActionListener = new View.OnClickListener() { + /** Listener for the primary or secondary actions in the list. + * Primary opens the call details. + * Secondary calls or plays. + **/ + private final View.OnClickListener mActionListener = new View.OnClickListener() { @Override public void onClick(View view) { - IntentProvider intentProvider = (IntentProvider) view.getTag(); - if (intentProvider != null) { - mContext.startActivity(intentProvider.getIntent(mContext)); - } + startActivityForAction(view); } }; - /** Listener for the secondary action in the list, either call or play. */ - private final View.OnClickListener mSecondaryActionListener = new View.OnClickListener() { - @Override - public void onClick(View view) { - IntentProvider intentProvider = (IntentProvider) view.getTag(); - if (intentProvider != null) { - mContext.startActivity(intentProvider.getIntent(mContext)); + + private void startActivityForAction(View view) { + final IntentProvider intentProvider = (IntentProvider) view.getTag(); + if (intentProvider != null) { + final Intent intent = intentProvider.getIntent(mContext); + // See IntentProvider.getCallDetailIntentProvider() for why this may be null. + if (intent != null) { + mContext.startActivity(intent); } } - }; + } @Override public boolean onPreDraw() { @@ -497,8 +498,8 @@ public class CallLogAdapter extends GroupingListAdapter private void findAndCacheViews(View view) { // Get the views to bind to. CallLogListItemViews views = CallLogListItemViews.fromView(view); - views.primaryActionView.setOnClickListener(mPrimaryActionListener); - views.secondaryActionView.setOnClickListener(mSecondaryActionListener); + views.primaryActionView.setOnClickListener(mActionListener); + views.secondaryActionView.setOnClickListener(mActionListener); view.setTag(views); } diff --git a/src/com/android/dialer/calllog/ClearCallLogDialog.java b/src/com/android/dialer/calllog/ClearCallLogDialog.java index 1f5b2b3b7..e6b4ce29c 100644 --- a/src/com/android/dialer/calllog/ClearCallLogDialog.java +++ b/src/com/android/dialer/calllog/ClearCallLogDialog.java @@ -22,6 +22,7 @@ import android.app.DialogFragment; import android.app.FragmentManager; import android.app.ProgressDialog; import android.content.ContentResolver; +import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.AsyncTask; @@ -29,11 +30,16 @@ import android.os.Bundle; import android.provider.CallLog.Calls; import com.android.dialer.R; +import com.android.dialer.service.CachedNumberLookupService; +import com.android.dialerbind.ObjectFactory; /** * Dialog that clears the call log after confirming with the user */ public class ClearCallLogDialog extends DialogFragment { + private static final CachedNumberLookupService mCachedNumberLookupService = + ObjectFactory.newCachedNumberLookupService(); + /** Preferred way to show this dialog */ public static void show(FragmentManager fragmentManager) { ClearCallLogDialog dialog = new ClearCallLogDialog(); @@ -43,6 +49,7 @@ public class ClearCallLogDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final ContentResolver resolver = getActivity().getContentResolver(); + final Context context = getActivity().getApplicationContext(); final OnClickListener okListener = new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -53,6 +60,9 @@ public class ClearCallLogDialog extends DialogFragment { @Override protected Void doInBackground(Void... params) { resolver.delete(Calls.CONTENT_URI, null, null); + if (mCachedNumberLookupService != null) { + mCachedNumberLookupService.clearAllCacheEntries(context); + } return null; } @Override diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java index bcba9ff37..bcb98fd48 100644 --- a/src/com/android/dialer/calllog/ContactInfoHelper.java +++ b/src/com/android/dialer/calllog/ContactInfoHelper.java @@ -130,9 +130,9 @@ public class ContactInfoHelper { return Contacts.CONTENT_LOOKUP_URI.buildUpon() .appendPath(Constants.LOOKUP_URI_ENCODED) - .appendQueryParameter(Constants.LOOKUP_URI_JSON, jsonString) .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Long.MAX_VALUE)) + .encodedFragment(jsonString) .build(); } catch (JSONException e) { return null; diff --git a/src/com/android/dialer/calllog/IntentProvider.java b/src/com/android/dialer/calllog/IntentProvider.java index 01ebf2f3e..da0c69de5 100644 --- a/src/com/android/dialer/calllog/IntentProvider.java +++ b/src/com/android/dialer/calllog/IntentProvider.java @@ -22,6 +22,7 @@ import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.provider.CallLog.Calls; +import android.util.Log; import com.android.contacts.common.CallUtil; import com.android.dialer.CallDetailActivity; @@ -32,6 +33,9 @@ import com.android.dialer.CallDetailActivity; * The intent is constructed lazily with the given information. */ public abstract class IntentProvider { + + private static final String TAG = IntentProvider.class.getSimpleName(); + public abstract Intent getIntent(Context context); public static IntentProvider getReturnCallIntentProvider(final String number) { @@ -66,6 +70,14 @@ public abstract class IntentProvider { return new IntentProvider() { @Override public Intent getIntent(Context context) { + if (cursor.isClosed()) { + // There are reported instances where the cursor is already closed. + // b/10937133 + // When causes a crash when it's accessed here. + Log.e(TAG, "getCallDetailIntentProvider() cursor is already closed."); + return null; + } + cursor.moveToPosition(position); Intent intent = new Intent(context, CallDetailActivity.class); diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java index bcf058b02..9ebf1121c 100644 --- a/src/com/android/dialer/dialpad/DialpadFragment.java +++ b/src/com/android/dialer/dialpad/DialpadFragment.java @@ -1704,6 +1704,7 @@ public class DialpadFragment extends Fragment activity.showSearchBar(); } else { activity.hideSearchBar(); + mDigits.requestFocus(); } } diff --git a/src/com/android/dialer/service/CachedNumberLookupService.java b/src/com/android/dialer/service/CachedNumberLookupService.java index 62881d2fe..5745c9ded 100644 --- a/src/com/android/dialer/service/CachedNumberLookupService.java +++ b/src/com/android/dialer/service/CachedNumberLookupService.java @@ -34,4 +34,12 @@ public interface CachedNumberLookupService { public boolean isCacheUri(String uri); public boolean addPhoto(Context context, String number, byte[] photo); + + /** + * Remove all cached phone number entries from the cache, regardless of how old they + * are. + * + * @param context Valid context + */ + public void clearAllCacheEntries(Context context); } |