Methods Summary |
---|
private void | fixIntent(android.content.Intent intent)
// This should be cleaned up: the call key used to send an Intent
// that just said to go to the recent calls list. It now sends this
// abstract action, but this class hasn't been rewritten to deal with it.
if (Intent.ACTION_CALL_BUTTON.equals(intent.getAction())) {
intent.setDataAndType(Calls.CONTENT_URI, Calls.CONTENT_TYPE);
intent.putExtra("call_key", true);
setIntent(intent);
}
|
public android.net.Uri | getAndClearDialUri()Retrieves the uri stored in {@link #setupDialUri(Intent)}. This uri
originally came from a dial intent received by this activity. The stored
uri will then be cleared after after this method returns.
Uri dialUri = mDialUri;
mDialUri = null;
return dialUri;
|
public java.lang.String | getAndClearFilterText()Retrieves the filter text stored in {@link #setupFilterText(Intent)}.
This text originally came from a FILTER_CONTACTS_ACTION intent received
by this activity. The stored text will then be cleared after after this
method returns.
String filterText = mFilterText;
mFilterText = null;
return filterText;
|
private boolean | isDialIntent(android.content.Intent intent)Returns true if the given intent contains a phone number to populate the dialer with
final String action = intent.getAction();
if (Intent.ACTION_DIAL.equals(action)) {
return true;
}
if (Intent.ACTION_VIEW.equals(action)) {
final Uri data = intent.getData();
if (data != null && "tel".equals(data.getScheme())) {
return true;
}
}
return false;
|
private boolean | isSendKeyWhileInCall(android.content.Intent intent, boolean recentCallsRequest)Returns true if the intent is due to hitting the green send key while in a call.
// If there is a call in progress go to the call screen
if (recentCallsRequest) {
final boolean callKey = intent.getBooleanExtra("call_key", false);
try {
ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
if (callKey && phone != null && phone.showCallScreen()) {
return true;
}
} catch (RemoteException e) {
Log.e(TAG, "Failed to handle send while in call", e);
}
}
return false;
|
protected void | onCreate(android.os.Bundle icicle)
super.onCreate(icicle);
final Intent intent = getIntent();
fixIntent(intent);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialer_activity);
mTabHost = getTabHost();
mTabHost.setOnTabChangedListener(this);
// Setup the tabs
setupDialerTab();
setupCallLogTab();
setupContactsTab();
setupFavoritesTab();
setCurrentTab(intent);
if (intent.getAction().equals(Contacts.Intents.UI.FILTER_CONTACTS_ACTION)
&& icicle == null) {
setupFilterText(intent);
}
|
public boolean | onKeyDown(int keyCode, android.view.KeyEvent event)
// Handle BACK
if (keyCode == KeyEvent.KEYCODE_BACK && isTaskRoot()) {
// Instead of stopping, simply push this to the back of the stack.
// This is only done when running at the top of the stack;
// otherwise, we have been launched by someone else so need to
// allow the user to go back to the caller.
moveTaskToBack(false);
return true;
}
return super.onKeyDown(keyCode, event);
|
public void | onNewIntent(android.content.Intent newIntent)
setIntent(newIntent);
fixIntent(newIntent);
setCurrentTab(newIntent);
final String action = newIntent.getAction();
if (action.equals(Contacts.Intents.UI.FILTER_CONTACTS_ACTION)) {
setupFilterText(newIntent);
} else if (isDialIntent(newIntent)) {
setupDialUri(newIntent);
}
|
protected void | onPause()
super.onPause();
int currentTabIndex = mTabHost.getCurrentTab();
if (currentTabIndex == TAB_INDEX_CONTACTS || currentTabIndex == TAB_INDEX_FAVORITES) {
SharedPreferences.Editor editor = getSharedPreferences(PREFS_DIALTACTS, MODE_PRIVATE)
.edit();
editor.putBoolean(PREF_FAVORITES_AS_CONTACTS, currentTabIndex == TAB_INDEX_FAVORITES);
editor.commit();
}
|
public void | onTabChanged(java.lang.String tabId){@inheritDoc}
// Because we're using Activities as our tab children, we trigger
// onWindowFocusChanged() to let them know when they're active. This may
// seem to duplicate the purpose of onResume(), but it's needed because
// onResume() can't reliably check if a keyguard is active.
Activity activity = getLocalActivityManager().getActivity(tabId);
if (activity != null) {
activity.onWindowFocusChanged(true);
}
|
private void | setCurrentTab(android.content.Intent intent)Sets the current tab based on the intent's request type
// If we got here by hitting send and we're in call forward along to the in-call activity
final boolean recentCallsRequest = Calls.CONTENT_TYPE.equals(intent.getType());
if (isSendKeyWhileInCall(intent, recentCallsRequest)) {
finish();
return;
}
// Dismiss menu provided by any children activities
Activity activity = getLocalActivityManager().
getActivity(mTabHost.getCurrentTabTag());
if (activity != null) {
activity.closeOptionsMenu();
}
// Tell the children activities that they should ignore any possible saved
// state and instead reload their state from the parent's intent
intent.putExtra(EXTRA_IGNORE_STATE, true);
// Choose the tab based on the inbound intent
String componentName = intent.getComponent().getClassName();
if (getClass().getName().equals(componentName)) {
if (recentCallsRequest) {
mTabHost.setCurrentTab(TAB_INDEX_CALL_LOG);
} else {
mTabHost.setCurrentTab(TAB_INDEX_DIALER);
}
} else if (FAVORITES_ENTRY_COMPONENT.equals(componentName)) {
mTabHost.setCurrentTab(TAB_INDEX_FAVORITES);
} else {
SharedPreferences prefs = getSharedPreferences(PREFS_DIALTACTS, MODE_PRIVATE);
boolean favoritesAsContacts = prefs.getBoolean(PREF_FAVORITES_AS_CONTACTS,
PREF_FAVORITES_AS_CONTACTS_DEFAULT);
if (favoritesAsContacts) {
mTabHost.setCurrentTab(TAB_INDEX_FAVORITES);
} else {
mTabHost.setCurrentTab(TAB_INDEX_CONTACTS);
}
}
// Tell the children activities that they should honor their saved states
// instead of the state from the parent's intent
intent.putExtra(EXTRA_IGNORE_STATE, false);
|
private void | setupCallLogTab()
// Force the class since overriding tab entries doesn't work
Intent intent = new Intent("com.android.phone.action.RECENT_CALLS");
intent.setClass(this, RecentCallsListActivity.class);
mTabHost.addTab(mTabHost.newTabSpec("call_log")
.setIndicator(getString(R.string.recentCallsIconLabel),
getResources().getDrawable(R.drawable.ic_tab_recent))
.setContent(intent));
|
private void | setupContactsTab()
Intent intent = new Intent(UI.LIST_DEFAULT);
intent.setClass(this, ContactsListActivity.class);
mTabHost.addTab(mTabHost.newTabSpec("contacts")
.setIndicator(getText(R.string.contactsIconLabel),
getResources().getDrawable(R.drawable.ic_tab_contacts))
.setContent(intent));
|
private void | setupDialUri(android.content.Intent intent)Stores the uri associated with a dial intent. This is so child activities can
check if they are supposed to display new dial info.
// If the intent was relaunched from history, don't reapply the intent.
if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
return;
}
mDialUri = intent.getData();
|
private void | setupDialerTab()
Intent intent = new Intent("com.android.phone.action.TOUCH_DIALER");
intent.setClass(this, TwelveKeyDialer.class);
mTabHost.addTab(mTabHost.newTabSpec("dialer")
.setIndicator(getString(R.string.dialerIconLabel),
getResources().getDrawable(R.drawable.ic_tab_dialer))
.setContent(intent));
|
private void | setupFavoritesTab()
Intent intent = new Intent(UI.LIST_STREQUENT_ACTION);
intent.setClass(this, ContactsListActivity.class);
mTabHost.addTab(mTabHost.newTabSpec("favorites")
.setIndicator(getString(R.string.contactsFavoritesLabel),
getResources().getDrawable(R.drawable.ic_tab_starred))
.setContent(intent));
|
private void | setupFilterText(android.content.Intent intent)Stores the filter text associated with a FILTER_CONTACTS_ACTION intent.
This is so child activities can check if they are supposed to display a filter.
// If the intent was relaunched from history, don't apply the filter text.
if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
return;
}
String filter = intent.getStringExtra(Contacts.Intents.UI.FILTER_TEXT_EXTRA_KEY);
if (filter != null && filter.length() > 0) {
mFilterText = filter;
}
|