gpt4 book ai didi

Android Browser.BOOKMARKS_URI 并不适用于所有设备。如何找出给定设备的正确 uri?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:56:11 26 4
gpt4 key购买 nike

我正在尝试使用 Android Browser.BOOKMARKS_URI 从我的应用程序 (https://play.google.com/store/apps/details?id=com.elementique.web) 中对设备书签进行增删改查

它在大多数设备上工作正常,但在某些设备上不起作用:-(

在这些设备上,尝试使用书签会导致

java.lang.IllegalArgumentException: Unknown URL content://browser/bookmarks

我现在明白 Boookmark Uri 可以不同于 AOSP 默认值(即“content://browser/bookmarks”)。

问题:

如何为给定设备获取正确的书签 URI

我已经“收集”了以下 URI

private static final Uri BOKKMARKS_DEFAULT = Browser.BOOKMARKS_URI; // = Uri.parse("content://browser/bookmarks")
private static final Uri BOKKMARKS_URI_CHROME = Uri.parse("content://com.android.chrome.browser/bookmarks");
private static final Uri BOKKMARKS_URI_SAMSUNG_S_ = Uri.parse("content://com.sec.android.app.sbrowser.browser/bookmarks");

这是一种在设备上“列出”所有可用内容 URI (content://...) 的方法吗?如果是,我可以列出它们并搜索出现的“/bookmarks”字符串并尝试使用此 URI。

注意:

如果应用程序无法获得“工作”书签 URI(即我自己的书签数据库,因为我的应用程序中确实需要书签功能),我目前正在创建回退机制

最佳答案

Is there a way to 'list' all available content URI (content://...) on a devices?

Play Store中有一个名为“Content Provider Helper”的开源APP可以列出设备上所有可用的 content:// URI。它使用 PackageManager.GET_PROVIDER

这是搜索所有可用内容提供者的相应类:

SearchProviderTask.java

package com.jensdriller.contentproviderhelper.task;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
import android.net.Uri;

public class SearchProvidersTask extends DialogAsyncTask<Uri, Void, List<String>> {
public SearchProvidersTask(Context context) {
super(context);
}

@Override
protected List<String> doInBackground(Uri... params) {
List<String> contentProviders = new ArrayList<String>();

try {
PackageManager pm = mContext.getPackageManager();
for (PackageInfo pack : pm.getInstalledPackages(PackageManager.GET_PROVIDERS)) {
ProviderInfo[] providers = pack.providers;
if (providers != null) {
for (ProviderInfo provider : providers) {
contentProviders.add("content://" + provider.authority);
}
}
}
} catch (Exception e) {
// PackageManager has died?
mException = e;
}

// Sort alphabetically and ignore case sensitivity
Collections.sort(contentProviders, new Comparator<String>() {
@Override
public int compare(String lhs, String rhs) {
return lowerCase(lhs).compareTo(lowerCase(rhs));
}

private String lowerCase(String s) {
return s.toLowerCase(Locale.getDefault());
}
});
return contentProviders;
}
}

Github:https://github.com/jenzz/ContentProviderHelper

关于Android Browser.BOOKMARKS_URI 并不适用于所有设备。如何找出给定设备的正确 uri?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28040445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com