【问题标题】:Android - Browser.BookmarkColumns cannot be resolved in Zxing LibraryAndroid - Browser.BookmarkColumns 无法在 Zxing 库中解析
【发布时间】:2015-11-30 10:42:02
【问题描述】:

我正在使用 zxing 库开发应用程序。我将 zxing 项目导入我的工作场所。在导入时,我遇到了一个问题。 Browser.BookmarkColumns 无法解析或不是类型。

以下是提供的代码和屏幕截图。一个小提示就足够了……

BookmarkPickerActivity.java

public final class BookmarkPickerActivity extends ListActivity {

private static final String TAG = BookmarkPickerActivity.class.getSimpleName();

private static final String[] BOOKMARK_PROJECTION = { Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL };

static final int TITLE_COLUMN = 0;
static final int URL_COLUMN = 1;

private static final String BOOKMARK_SELECTION = Browser.BookmarkColumns.BOOKMARK + " = 1 AND " + Browser.BookmarkColumns.URL + " IS NOT NULL";

private Cursor cursor;

@Override
protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    cursor = getContentResolver().query(content://com.android.chrome.browser/bookmarks, BOOKMARK_PROJECTION, BOOKMARK_SELECTION, null, null);
    if (cursor == null) {
        Log.w(TAG, "No cursor returned for bookmark query");
        finish();
        return;
    }
    setListAdapter(new BookmarkAdapter(this, cursor));
}

@Override
protected void onDestroy() {
    if (cursor != null) {
        cursor.close();
    }
    super.onDestroy();
}

@Override
protected void onListItemClick(ListView l, View view, int position, long id) {
    if (!cursor.isClosed() && cursor.moveToPosition(position)) {
        Intent intent = new Intent();
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
        intent.putExtra(Browser.BookmarkColumns.TITLE, cursor.getString(TITLE_COLUMN));
        intent.putExtra(Browser.BookmarkColumns.URL, cursor.getString(URL_COLUMN));
        setResult(RESULT_OK, intent);
    } else {
        setResult(RESULT_CANCELED);
    }
    finish();
}
}

【问题讨论】:

    标签: android qr-code zxing


    【解决方案1】:

    Most things related to Bookmarks were removed in API Level 23 (Android 6.0)。您将 compileSdkVersion(也称为 Eclipse 中的构建目标)设置为 API 级别 23。您可以将 compileSdkVersion 设置为更低的值以克服此错误,但代码本身无法在 Android 6.0+ 上运行。

    【讨论】:

    • 当他们说不要从全球提供商那里访问书签或使用书签权限时。相反,您的应用应在内部存储书签数据。它们的真正含义是什么?
    • @PradeepSingh:他们的意思正是他们所说的。每个 Web 浏览器应用程序都应该维护自己的书签集合。
    • 有什么解决办法吗?或在我的应用中实现二维码的任何其他方式?
    • @PradeepSingh:在我的回答中引用我自己的话:“您可以将您的 compileSdkVersion 放到更低的位置以克服此错误,但代码本身不适用于 Android 6.0+”。您可以完全删除书签支持代码,也可以在运行时检查 Build.VERSION.SDK_INT 并跳过 Android 6.0+ 设备上的书签代码。请记住,zxing 是一个应用程序,而不是一个库。
    【解决方案2】:

    选项 1: 将 build.gradle 文件上的 compileSdkVersion 23 更改为 22 以解决此问题..

    选项2:使用Reflection方法获取compileSdkVersion中的Browser History >=23。

    【讨论】:

    • 如何使用反射法?谢谢。
    【解决方案3】:

    使用新版Zxing,已更新为api 25

    【讨论】:

      猜你喜欢
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 2023-04-02
      • 2014-04-18
      • 2018-06-19
      • 2019-03-01
      • 1970-01-01
      相关资源
      最近更新 更多