summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/dialer/DialtactsActivity.java7
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java33
-rw-r--r--src/com/android/dialer/calllog/ClearCallLogDialog.java10
-rw-r--r--src/com/android/dialer/calllog/ContactInfoHelper.java2
-rw-r--r--src/com/android/dialer/calllog/IntentProvider.java12
-rw-r--r--src/com/android/dialer/dialpad/DialpadFragment.java1
-rw-r--r--src/com/android/dialer/service/CachedNumberLookupService.java8
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);
}