为多个Api版本编写代码,用于在较新版本中删除的变量和方法

时间:2015-12-08 19:13:44

标签: android bookmarks android-6.0-marshmallow

根据these changes on Android 6.0我无法编译我的代码,因为此行Browser.BOOKMARKS_URI生成无法解决符号错误。

我尝试过编写像这样的代码

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M){
            mCur = ctx.getContentResolver().query(Browser.BOOKMARKS_URI,
                    Browser.HISTORY_PROJECTION, null, null, "date DESC");
        }else{
            //TODO code for newer version
        }

我正在用api23编译我的代码但是无法构建项目,我应该降低到api22还是有其他方法来使用api23编译这段代码。

1 个答案:

答案 0 :(得分:3)

从Marshmallow开始,您将无法真正使用书签。

来自Android issue tracker #2805

  

全球书签不再可用。他们还没有真正做到   无论如何,长期以来的任何事情,因为这些天的浏览器一般都保留   他们自己的内部书签数据,而不是把它们放在全球   供应商。使用全球提供商的应用也应切换到   在内部维护它们。

然而,他们仍然可以使用旧版Android,但需要注意上面提到的警告。要在继续针对API 23进行编译的同时支持旧版Android,您需要对旧URI进行硬编码。

Looking at the Lollipop source,URI定义为

public static final Uri BOOKMARKS_URI = Uri.parse("content://browser/bookmarks");

在您自己的代码中定义并按照以前的方式继续操作,但请确保您仅在API 22及更低版本上使用它。