Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2332)

Unified Diff: demos/src/main/java/org/chromium/customtabsdemos/CustomUIActivity.java

Issue 1603383003: color, package and action bar configuration. (Closed) Base URL: https://github.com/GoogleChrome/custom-tabs-client.git@master
Patch Set: fixes Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: demos/src/main/java/org/chromium/customtabsdemos/CustomUIActivity.java
diff --git a/demos/src/main/java/org/chromium/customtabsdemos/CustomUIActivity.java b/demos/src/main/java/org/chromium/customtabsdemos/CustomUIActivity.java
index 5ce437c407c8c7f7cc1dccbd8e92ccbbb986b2dc..b3142ed064498fdbfea47298b8b2e66b4322c9ce 100644
--- a/demos/src/main/java/org/chromium/customtabsdemos/CustomUIActivity.java
+++ b/demos/src/main/java/org/chromium/customtabsdemos/CustomUIActivity.java
@@ -17,16 +17,20 @@ import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
+import android.provider.CalendarContract;
+import android.provider.ContactsContract;
import android.support.customtabs.CustomTabsIntent;
import android.support.v7.app.AppCompatActivity;
-import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
+import org.chromium.customtabsclient.shared.CustomTabsHelper;
+
+import java.util.ArrayList;
+
/**
* Opens Chrome Custom Tabs with a customized UI.
*/
@@ -34,29 +38,37 @@ public class CustomUIActivity extends AppCompatActivity implements View.OnClickL
private static final String TAG = "CustChromeTabActivity";
private EditText mUrlEditText;
- private EditText mCustomTabColorEditText;
- private CheckBox mShowActionButtonCheckbox;
+ private CheckBox mAddActionButtonCheckbox;
private CheckBox mAddMenusCheckbox;
private CheckBox mShowTitleCheckBox;
private CheckBox mCustomBackButtonCheckBox;
private CheckBox mAutoHideAppBarCheckbox;
private CustomTabActivityHelper mCustomTabActivityHelper;
+ private String toolbarColor;
+ private String packageName;
+ private ArrayList<String> itemsDescriptions;
+ private ArrayList<Uri> itemsImage;
+ private ArrayList<String> allSupportingPackageNames;
+ private ArrayList<String> itemsIntent;
+
+ private int advancedUISettintRequestCode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_ui);
-
mCustomTabActivityHelper = new CustomTabActivityHelper();
findViewById(R.id.start_custom_tab).setOnClickListener(this);
-
+ findViewById(R.id.advanced_ui_setting).setOnClickListener(this);
mUrlEditText = (EditText) findViewById(R.id.url);
- mCustomTabColorEditText = (EditText) findViewById(R.id.custom_toolbar_color);
- mShowActionButtonCheckbox = (CheckBox) findViewById(R.id.custom_show_action_button);
+ mAddActionButtonCheckbox = (CheckBox) findViewById(R.id.custom_show_action_button);
mAddMenusCheckbox = (CheckBox) findViewById(R.id.custom_add_menus);
mShowTitleCheckBox = (CheckBox) findViewById(R.id.show_title);
mCustomBackButtonCheckBox = (CheckBox) findViewById(R.id.custom_back_button);
mAutoHideAppBarCheckbox = (CheckBox) findViewById(R.id.auto_hide_checkbox);
+ advancedUISettintRequestCode = 999;
+
+ makeDefaultSetting();
}
@Override
@@ -78,25 +90,96 @@ public class CustomUIActivity extends AppCompatActivity implements View.OnClickL
case R.id.start_custom_tab:
openCustomTab();
break;
+ case R.id.advanced_ui_setting:
+ openUISetting();
+ break;
default:
//Unknown View Clicked
}
}
- private void openCustomTab() {
- String url = mUrlEditText.getText().toString();
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (requestCode == advancedUISettintRequestCode && data != null) {
+ packageName = data.getStringExtra(AdvancedUISettingActivity.KEY_PACKAGE);
+ toolbarColor = data.getStringExtra(AdvancedUISettingActivity.KEY_COLOR);
+ itemsDescriptions = (ArrayList<String>) data.getSerializableExtra(
+ AdvancedUISettingActivity.KEY_DESCRIPTIONS);
+ itemsImage = (ArrayList<Uri>) data.getSerializableExtra(
+ AdvancedUISettingActivity.KEY_IMAGES);
+ itemsIntent = (ArrayList<String>) data.getSerializableExtra(
+ AdvancedUISettingActivity.KEY_INTENTS);
+ } else {
- int color = Color.BLUE;
- try {
- color = Color.parseColor(mCustomTabColorEditText.getText().toString());
- } catch (NumberFormatException ex) {
- Log.i(TAG, "Unable to parse Color: " + mCustomTabColorEditText.getText());
}
+ }
+
+ private void makeDefaultSetting() {
+ toolbarColor = "Red";
+ allSupportingPackageNames = CustomTabsHelper.getAllPackagesSupportingCustomTabs(this);
+ packageName = CustomTabsHelper.getPackageNameToUse(this, allSupportingPackageNames);
+ itemsIntent = new ArrayList<String>();
+ itemsDescriptions = new ArrayList<String>();
+ itemsImage = new ArrayList<Uri>();
+ }
+
+ private void openUISetting() {
+ Intent intent = new Intent(this, AdvancedUISettingActivity.class);
+ intent.putExtra(AdvancedUISettingActivity.KEY_PACKAGES_LIST, allSupportingPackageNames);
Ian Wen 2016/02/10 02:36:06 you don't need to pass the list to the advanced ac
BigBossZhiling 2016/02/17 05:18:09 Done.
+ intent.putExtra(AdvancedUISettingActivity.KEY_PACKAGE, packageName);
+ intent.putExtra(AdvancedUISettingActivity.KEY_COLOR, toolbarColor);
+ intent.putExtra(AdvancedUISettingActivity.KEY_DESCRIPTIONS, itemsDescriptions);
+ intent.putExtra(AdvancedUISettingActivity.KEY_IMAGES, itemsImage);
+ intent.putExtra(AdvancedUISettingActivity.KEY_INTENTS, itemsIntent);
+ startActivityForResult(intent, advancedUISettintRequestCode);
+ }
+
+ private void addActionButtons(CustomTabsIntent.Builder intentBuilder) {
+ for (int i = 0; i < itemsDescriptions.size(); i++) {
+ intentBuilder.addActionBarItem(i,
+ AdvancedUISettingActivity.uriToBitMap(this, itemsImage.get(i)),
+ itemsDescriptions.get(i),
+ createPendingIntent(itemsIntent.get(i)));
+ }
+ }
+
+ private PendingIntent createPendingIntent(String intent) {
+ switch (intent) {
+ case "Send":
+ Intent sendIntent = new Intent();
+ sendIntent.setAction(Intent.ACTION_SEND);
+ sendIntent.setType("text/plain");
+ return PendingIntent.getActivity(this, 0, sendIntent, 0);
+ case "Select Contact":
+ Intent contact = new Intent(Intent.ACTION_PICK);
+ contact.setType(ContactsContract.Contacts.CONTENT_TYPE);
+ return PendingIntent.getActivity(this, 0, contact, 0);
+ case "Add Event":
+ Intent event = new Intent(Intent.ACTION_INSERT)
+ .setData(CalendarContract.Events.CONTENT_URI)
+ .putExtra(CalendarContract.Events.TITLE, "Great Event")
+ .putExtra(CalendarContract.Events.EVENT_LOCATION, "Googleplex 43")
+ .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, "today")
+ .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, "tomorrow");
+ return PendingIntent.getActivity(this, 0, event, 0);
+ case "Camera":
+ return PendingIntent.getActivity(this, 0, new Intent(this, Camera.class),
+ PendingIntent.FLAG_UPDATE_CURRENT);
+ default:
+ return null;
+ }
+ }
+
+ private void openCustomTab() {
+ String url = mUrlEditText.getText().toString();
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();
- intentBuilder.setToolbarColor(color);
- if (mShowActionButtonCheckbox.isChecked()) {
+ intentBuilder.setToolbarColor(CustomTabsHelper.stringToColor(toolbarColor));
+ intentBuilder.addDefaultShareMenuItem();
+
+ if (mAddActionButtonCheckbox.isChecked()) {
//Generally you do not want to decode bitmaps in the UI thread.
String shareLabel = getString(R.string.label_action_share);
Bitmap icon = BitmapFactory.decodeResource(getResources(),
@@ -113,6 +196,8 @@ public class CustomUIActivity extends AppCompatActivity implements View.OnClickL
intentBuilder.setShowTitle(mShowTitleCheckBox.isChecked());
+ addActionButtons(intentBuilder);
+
if (mAutoHideAppBarCheckbox.isChecked()) {
intentBuilder.enableUrlBarHiding();
}
@@ -127,7 +212,8 @@ public class CustomUIActivity extends AppCompatActivity implements View.OnClickL
android.R.anim.slide_out_right);
CustomTabActivityHelper.openCustomTab(
- this, intentBuilder.build(), Uri.parse(url), new WebviewFallback());
+ this, intentBuilder.build(), Uri.parse(url), new WebviewFallback(),
+ packageName);
}
private PendingIntent createPendingIntent() {

Powered by Google App Engine
This is Rietveld 408576698