Browse Source
import from the default built in browser, stock browser ususally, but chrome on marshmallow and above.master
Anthony Restaino
9 years ago
6 changed files with 211 additions and 11 deletions
@ -0,0 +1,141 @@ |
|||||||
|
package acr.browser.lightning.database; |
||||||
|
|
||||||
|
import android.content.Context; |
||||||
|
import android.database.Cursor; |
||||||
|
import android.net.Uri; |
||||||
|
import android.support.annotation.NonNull; |
||||||
|
import android.support.annotation.Nullable; |
||||||
|
import android.support.annotation.WorkerThread; |
||||||
|
import android.util.Log; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import acr.browser.lightning.utils.Utils; |
||||||
|
|
||||||
|
public class BookmarkLocalSync { |
||||||
|
|
||||||
|
private static final String TAG = BookmarkLocalSync.class.getSimpleName(); |
||||||
|
|
||||||
|
private static final String STOCK_BOOKMARKS_CONTENT = "content://browser/bookmarks"; |
||||||
|
private static final String CHROME_BOOKMARKS_CONTENT = "content://com.android.chrome.browser/bookmarks"; |
||||||
|
|
||||||
|
private static final String COLUMN_TITLE = "title"; |
||||||
|
private static final String COLUMN_URL = "url"; |
||||||
|
private static final String COLUMN_BOOKMARK = "bookmark"; |
||||||
|
|
||||||
|
private Context mContext; |
||||||
|
|
||||||
|
public BookmarkLocalSync(Context context) { |
||||||
|
mContext = context; |
||||||
|
} |
||||||
|
|
||||||
|
@NonNull |
||||||
|
@WorkerThread |
||||||
|
public List<HistoryItem> getBookmarksFromStockBrowser() { |
||||||
|
List<HistoryItem> list = new ArrayList<>(); |
||||||
|
if (!isStockSupported()) { |
||||||
|
return list; |
||||||
|
} |
||||||
|
Cursor cursor = getStockCursor(); |
||||||
|
try { |
||||||
|
if (cursor != null) { |
||||||
|
for (int n = 0; n < cursor.getColumnCount(); n++) { |
||||||
|
Log.d(TAG, cursor.getColumnName(n)); |
||||||
|
} |
||||||
|
|
||||||
|
while (cursor.moveToNext()) { |
||||||
|
if (cursor.getInt(2) == 1) { |
||||||
|
String url = cursor.getString(0); |
||||||
|
String title = cursor.getString(1); |
||||||
|
if (url.isEmpty()) { |
||||||
|
continue; |
||||||
|
} |
||||||
|
if (title == null || title.isEmpty()) { |
||||||
|
title = Utils.getDomainName(url); |
||||||
|
} |
||||||
|
list.add(new HistoryItem(url, title)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
Utils.close(cursor); |
||||||
|
return list; |
||||||
|
} |
||||||
|
|
||||||
|
@NonNull |
||||||
|
@WorkerThread |
||||||
|
public List<HistoryItem> getBookmarksFromChrome() { |
||||||
|
List<HistoryItem> list = new ArrayList<>(); |
||||||
|
if (!isChromeSupported()) { |
||||||
|
return list; |
||||||
|
} |
||||||
|
Cursor cursor = getStockCursor(); |
||||||
|
try { |
||||||
|
if (cursor != null) { |
||||||
|
for (int n = 0; n < cursor.getColumnCount(); n++) { |
||||||
|
Log.d(TAG, cursor.getColumnName(n)); |
||||||
|
} |
||||||
|
|
||||||
|
while (cursor.moveToNext()) { |
||||||
|
if (cursor.getInt(2) == 1) { |
||||||
|
String url = cursor.getString(0); |
||||||
|
String title = cursor.getString(1); |
||||||
|
if (url.isEmpty()) { |
||||||
|
continue; |
||||||
|
} |
||||||
|
if (title == null || title.isEmpty()) { |
||||||
|
title = Utils.getDomainName(url); |
||||||
|
} |
||||||
|
list.add(new HistoryItem(url, title)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
Utils.close(cursor); |
||||||
|
return list; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isStockSupported() { |
||||||
|
Cursor cursor = getStockCursor(); |
||||||
|
Utils.close(cursor); |
||||||
|
return cursor != null; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isChromeSupported() { |
||||||
|
Cursor cursor = getChromeCursor(); |
||||||
|
Utils.close(cursor); |
||||||
|
return cursor != null; |
||||||
|
} |
||||||
|
|
||||||
|
@Nullable |
||||||
|
private Cursor getChromeCursor() { |
||||||
|
Cursor cursor; |
||||||
|
Uri uri = Uri.parse(CHROME_BOOKMARKS_CONTENT); |
||||||
|
try { |
||||||
|
cursor = mContext.getContentResolver().query(uri, |
||||||
|
new String[]{COLUMN_URL, COLUMN_TITLE, COLUMN_BOOKMARK}, null, null, null); |
||||||
|
} catch (IllegalArgumentException e) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
return cursor; |
||||||
|
} |
||||||
|
|
||||||
|
@Nullable |
||||||
|
private Cursor getStockCursor() { |
||||||
|
Cursor cursor; |
||||||
|
Uri uri = Uri.parse(STOCK_BOOKMARKS_CONTENT); |
||||||
|
try { |
||||||
|
cursor = mContext.getContentResolver().query(uri, |
||||||
|
new String[]{COLUMN_URL, COLUMN_TITLE, COLUMN_BOOKMARK}, null, null, null); |
||||||
|
} catch (IllegalArgumentException e) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
return cursor; |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue