fixed adding bookmark shortcut from home screen
bug: http://b/issue?id=2948937
added shortcut activity to host bookmarks page fragment
Change-Id: I39db8985b3c07fae6ca800cc57da3747040cb814
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index f9dc5e0..3ef19f3 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -64,6 +64,9 @@
static final int LOADER_BOOKMARKS = 1;
+ static final String EXTRA_SHORTCUT = "create_shortcut";
+ static final String EXTRA_DISABLE_WINDOW = "disable_new_window";
+
BookmarksHistoryCallbacks mCallbacks;
GridView mGrid;
BrowserBookmarksAdapter mAdapter;
@@ -103,7 +106,7 @@
// Fill in the "up" button if needed
BookmarksLoader bl = (BookmarksLoader) loader;
- boolean rootFolder =
+ boolean rootFolder =
(BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER.equals(bl.getUri()));
if (rootFolder) {
mUpButton.setText(R.string.defaultBookmarksUpButton);
@@ -121,7 +124,7 @@
public void onClick(View view) {
if (view == mUpButton) {
Pair<String, Uri> pair = mFolderStack.pop();
- BookmarksLoader loader =
+ BookmarksLoader loader =
(BookmarksLoader) ((Loader) getLoaderManager().getLoader(LOADER_BOOKMARKS));
loader.setUri(pair.second);
loader.forceLoad();
@@ -203,7 +206,7 @@
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
-
+
final Activity activity = getActivity();
MenuInflater inflater = activity.getMenuInflater();
inflater.inflate(R.menu.bookmarkscontext, menu);
@@ -253,7 +256,7 @@
super.onAttach(activity);
mCallbacks = (BookmarksHistoryCallbacks) activity;
}
-
+
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@@ -283,7 +286,7 @@
return root;
}
-
+
@Override
public void onReceivedIcon(String url, Bitmap icon) {
// A new favicon has been loaded, so let anything attached to the adapter know about it
@@ -300,8 +303,9 @@
return;
}
if (mCreateShortcut) {
- // TODO handle this
- createShortcutIntent(position);
+ Intent intent = createShortcutIntent(position);
+ // the activity handles the intent in startActivityFromFragment
+ startActivity(intent);
return;
}
@@ -315,10 +319,10 @@
title = cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE);
} else {
// TODO localize
- title = "Bookmarks";
+ title = "Bookmarks";
}
LoaderManager manager = getLoaderManager();
- BookmarksLoader loader =
+ BookmarksLoader loader =
(BookmarksLoader) ((Loader) manager.getLoader(LOADER_BOOKMARKS));
mFolderStack.push(new Pair(title, loader.getUri()));
Uri uri = ContentUris.withAppendedId(
@@ -349,9 +353,9 @@
Intent intent = new Intent(getActivity(), AddBookmarkPage.class);
Cursor cursor = (Cursor) mAdapter.getItem(position);
Bundle item = new Bundle();
- item.putString(Browser.BookmarkColumns.TITLE,
+ item.putString(Browser.BookmarkColumns.TITLE,
cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE));
- item.putString(Browser.BookmarkColumns.URL,
+ item.putString(Browser.BookmarkColumns.URL,
cursor.getString(BookmarksLoader.COLUMN_INDEX_URL));
byte[] data = cursor.getBlob(BookmarksLoader.COLUMN_INDEX_FAVICON);
if (data != null) {
@@ -384,7 +388,7 @@
}
/**
- * Update a row in the database with new information.
+ * Update a row in the database with new information.
* Requeries the database if the information has changed.
* @param map Bundle storing id, title and url of new information
*/
@@ -450,7 +454,7 @@
Cursor cursor = (Cursor) mAdapter.getItem(position);
return cursor.getString(BookmarksLoader.COLUMN_INDEX_URL);
}
-
+
private void copy(CharSequence text) {
ClipboardManager cm = (ClipboardManager) getActivity().getSystemService(
Context.CLIPBOARD_SERVICE);
diff --git a/src/com/android/browser/ShortcutActivity.java b/src/com/android/browser/ShortcutActivity.java
new file mode 100644
index 0000000..7994d0a
--- /dev/null
+++ b/src/com/android/browser/ShortcutActivity.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.app.FragmentTransaction;
+import android.content.Intent;
+import android.os.Bundle;
+
+public class ShortcutActivity extends Activity
+ implements BookmarksHistoryCallbacks {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
+ FragmentManager fm = getFragmentManager();
+ FragmentTransaction transaction = fm.openTransaction();
+ Bundle extras = new Bundle();
+ extras.putBoolean(BrowserBookmarksPage.EXTRA_SHORTCUT, true);
+ extras.putBoolean(BrowserBookmarksPage.EXTRA_DISABLE_WINDOW, true);
+ Fragment frag = Fragment.instantiate(this, BrowserBookmarksPage.class.getName(), extras);
+ transaction.add(android.R.id.content, frag);
+ transaction.commit();
+ }
+
+ /**
+ * not used for shortcuts
+ */
+ @Override
+ public void onRemoveParentChildRelationShips() {}
+
+ /**
+ * handle fragment startActivity
+ */
+ @Override
+ public void startActivityFromFragment(Fragment f, Intent intent, int requestCode) {
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+
+ @Override
+ public void finish() {
+ super.finish();
+ }
+
+ /**
+ * not used for shortcuts
+ */
+ @Override
+ public void onUrlSelected(String url, boolean newWindow) {}
+
+}