使用下面的功能,我试图获取用户在其Android手机上从Chrome浏览器访问的最新网址.此功能适用于大多数站点,但不适用于"www.reddit.com".
url如果我访问"www.google.com","www.hulu.com"或"www.kayak.com",则下面的变量会更新,但如果我访问"www.reddit.com"则不会更新.
如果我去"m.reddit.com" 它会更新.与facebook相同的问题,检测m.facebook.com但不是www.facebook.com.
我不明白Android记录一个但不记录另一个的"www.reddit.com"和"m.reddit.com"之间有什么区别.
我需要在代码中进行哪些更改才能检测到所有URL访问?
public String returnLastChromeURL(int browserCode) {
String[] proj = new String[] { Browser.BookmarkColumns.DATE,
Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL };
String dateTime;
Uri uriCustom = Uri
.parse("content://com.android.chrome.browser/bookmarks");
String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history,
// 1 = bookmark
try {
Cursor mCur = mContext.getContentResolver().query(uriCustom, proj, sel,
null, BookmarkColumns.DATE + " ASC");
mCur.moveToFirst();
mCur.moveToLast();
dateTime = mCur.getString(mCur
.getColumnIndex(Browser.BookmarkColumns.DATE));
title = mCur.getString(mCur
.getColumnIndex(Browser.BookmarkColumns.TITLE));
url = mCur.getString(mCur
.getColumnIndex(Browser.BookmarkColumns.URL)); …Run Code Online (Sandbox Code Playgroud) android bookmarks google-chrome browser-history android-cursorloader
我试图通过使用异步查询提供CursorLoader了SimpleCursorTreeAdapter
这是我Fragment实现的类CursorLoader
public class GroupsListFragment extends ExpandableListFragment implements
LoaderManager.LoaderCallbacks<Cursor> {
private final String DEBUG_TAG = getClass().getSimpleName().toString();
private static final String[] CONTACTS_PROJECTION = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME };
private static final String[] GROUPS_SUMMARY_PROJECTION = new String[] {
ContactsContract.Groups.TITLE, ContactsContract.Groups._ID,
ContactsContract.Groups.SUMMARY_COUNT,
ContactsContract.Groups.ACCOUNT_NAME,
ContactsContract.Groups.ACCOUNT_TYPE,
ContactsContract.Groups.DATA_SET };
GroupsAdapter mAdapter;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
populateContactList();
getLoaderManager().initLoader(-1, null, this);
}
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
// This is called when a new Loader needs …Run Code Online (Sandbox Code Playgroud) android expandablelistadapter simplecursoradapter android-cursorloader
我正在浏览一些代码,我意识到我实际上并不知道如何使用连接CursorLoader和LoaderManager组合CursorAdapter.这是我困惑的部分.
agendaAdapter = new MyAgendaAdapter(this, null);
makeProviderBundle(new String[] {"_id", "event_name", "start_date", "start_time",
"end_date", "end_time", "location"}, "date(?) >= start_date and date(?) <= end_date",
new String[]{getChosenDate(), getChosenDate()}, null);
getLoaderManager().initLoader(0, myBundle, MainDisplayActivity.this);
list.setAdapter(agendaAdapter);
Run Code Online (Sandbox Code Playgroud)
那么query()我的自定义方法如何ContentProvider将其发送到特定的方法CursorAdapter呢?我只是没有看到连接.我理解其他一切,但这个问题是什么.哦,我应该提一下,代码工作正常.
android android-contentprovider android-loadermanager android-cursorloader
我将我的android更新SDK到最新版本,现在它说startManagingCursor()是deprecated.我需要帮助来更新我的代码以使用新代码 CursorLoader.
private void fillData() {
Cursor notesCursor = mDbHelper.fetchAllNotes();
startManagingCursor(notesCursor);
NoteAdapter notes = new NoteAdapter(this, R.layout.notes_row, notesCursor);
setListAdapter(notes);
}
Run Code Online (Sandbox Code Playgroud)
那么,startManagingCursor()旧的,如果它被翻译,新代码会是什么样子?
我试图通过CursorLoader从sqlite db查询数据.当我浏览android开发者网站的文档时,我找不到限制查询.
CursorLoader(Context context, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
如何在CursorLoader中实现限制?
提前致谢
在典型的Android项目中,我们需要以干净的方式将数据从某个地方(REST,SQL,缓存等)提取到UI中,我们通常使用Loader,Service或(可能是yuk)AsyncTask,但我发现所有这些方法由于以下几个原因不满意:
我被这些文章中概述的想法所吸引:http : //fernandocejas.com/2014/09/03/architecting-android-the-clean-way/ http://antonioleiva.com/mvp-android/ http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
成功开始使用MVP将活动/碎片/视图分解为更小/更清洁的部分,我现在认为上述问题的解决方案可能是依赖于消息总线(Otto,EventBus等)而不是服务或加载器或任何与域数据交互的内容.
所以在实践中这意味着不是使用(例如)CursorLoader从数据库加载Cursor,而是使用消息总线发送消息来请求数据,数据被加载到后台线程以响应该消息,然后通过UI线程上的消息到达时处理响应数据.对我来说至关重要的是,我希望将数据结构从业务领域推出,而不是Android域,所以我更喜欢业务对象数组,而不是Cursor.
这是工程设计,总是需要权衡,虽然这似乎提供了更清晰的关注点分离,但是装载机/服务模板的减少,缺点是什么?
我的问题是,是否有任何基本原因不采用这种基于消息的Android应用程序方法?
android android-service android-cursor android-testing android-cursorloader
我为什么要使用AsyncTaskLoader,何时应该更喜欢CursorLoader,反之亦然?
在官方页面中,显示了App-listing示例,它使用AsyncTaskLoader而不是CursorLoader.
这两者有哪些优缺点?我在某处读到了CursorLoader没有关注内容更改(在sqlite中).
谢谢!
android android-asynctask android-cursorloader android-sqlite
好的,文档声明它允许Activity管理游标的生命周期.但是我没有真正看到它的重点,因为当活动被销毁时,对新创建的游标的任何引用也应该被删除,然后光标本身在下一个垃圾收集周期中就会消失.那为什么要这么麻烦?
sqlite android cursor android-loadermanager android-cursorloader
我正在尝试从Android中的Sqlite表加载所有项目,并希望订购结果.
如何指定返回光标的顺序?
我通过以下方式通过CursorLoader查询ContentProvider:
new CursorLoader(context, RepresentativeEntityContentProvider.CONTENT_URI, null, null,
null, null);
Run Code Online (Sandbox Code Playgroud) android android-contentprovider android-cursorloader android-sqlite
我有一个我想查询的SQLite数据库.我想通过ICS定位Android 2.2.我遇到了关于如何执行此操作的文章,但它使用了弃用的代码(不是异步查询,而是在UI线程上).我已经阅读过,我可以使用CursorLoader它LoaderManager来执行此任务的首选,最佳实践方式(以免陷入UI线程).
问题是找到一个简洁的例子向我解释如何做到这一点.1)加载数据库,2)查询它,3)使用结果填充AutoCompletetextBox列表视图.
这样的例子存在吗?