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

帕斯卡

我正在尝试使用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(例如,我自己的书签数据库,因为我的应用程序确实需要书签功能),则我目前正在创建后备机制。

扎姆·沉克

有没有一种方法可以“列出”设备上所有可用的内容URI(content:// ...)?

Play商店有一个名为“ 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何找到适用于Android设备的正确来源?

来自分类Dev

最终签名的 apk 输出不适用于所有 android 设备

来自分类Dev

CSS媒体查询不适用于Android设备

来自分类Dev

按键不适用于某些Android设备

来自分类Dev

字体家族样式不适用于android设备吗?

来自分类Dev

适用于Android的附近连接API-不适用于某些设备

来自分类Dev

Android 设备的 autoGrantPermissions 适用于 Windows、Linux,但不适用于 OSX

来自分类Dev

CountDownTimer 适用于 Android Studio,不适用于设备

来自分类Dev

Android代理设置是否适用于设备上的所有应用?

来自分类Dev

适用于Android的PushSharp设备ID

来自分类Dev

RelativeLayout不适用于所有屏幕尺寸的android

来自分类Dev

Android:ScaleType="fitXY" 不适用于所有图像

来自分类Dev

Android 国际化不适用于某些 Android 设备

来自分类Dev

抱歉,此视频不适用于在Http Streaming Android中流式传输到此设备

来自分类Dev

Android 样式更改不适用于三星设备

来自分类Dev

@font-face 不适用于移动设备(特别是 Android)

来自分类Dev

适用于多种设备的Android通用启动画面

来自分类Dev

适用于Android的Mini TV无法识别为设备

来自分类Dev

适用于经典AND BTLE设备的Android蓝牙扫描

来自分类Dev

Ubuntu上适用于Android设备的最佳软件?

来自分类Dev

适用于多种设备的Android通用启动画面

来自分类Dev

Android适用于不同设备的常规缩放

来自分类Dev

Ubuntu上适用于Android设备的最佳软件?

来自分类Dev

Phonegap / Cordova地理位置不适用于Android 4.0+,但适用于所有其他平台

来自分类Dev

是否有适用于Android移动设备的默认DotsPageIndicator(不易磨损)?

来自分类Dev

如何制作适用于移动设备和平板电脑的自适应Android应用程序?

来自分类Dev

Android-我按钮的onclick上的Null异常指针。适用于仿真器,但不适用于设备

来自分类Dev

在Android模拟器中安装应用程序显示“此应用程序不适用于您的设备”

来自分类Dev

RTC_WAKEUP不适用于所有设备

Related 相关文章

  1. 1

    如何找到适用于Android设备的正确来源?

  2. 2

    最终签名的 apk 输出不适用于所有 android 设备

  3. 3

    CSS媒体查询不适用于Android设备

  4. 4

    按键不适用于某些Android设备

  5. 5

    字体家族样式不适用于android设备吗?

  6. 6

    适用于Android的附近连接API-不适用于某些设备

  7. 7

    Android 设备的 autoGrantPermissions 适用于 Windows、Linux,但不适用于 OSX

  8. 8

    CountDownTimer 适用于 Android Studio,不适用于设备

  9. 9

    Android代理设置是否适用于设备上的所有应用?

  10. 10

    适用于Android的PushSharp设备ID

  11. 11

    RelativeLayout不适用于所有屏幕尺寸的android

  12. 12

    Android:ScaleType="fitXY" 不适用于所有图像

  13. 13

    Android 国际化不适用于某些 Android 设备

  14. 14

    抱歉,此视频不适用于在Http Streaming Android中流式传输到此设备

  15. 15

    Android 样式更改不适用于三星设备

  16. 16

    @font-face 不适用于移动设备(特别是 Android)

  17. 17

    适用于多种设备的Android通用启动画面

  18. 18

    适用于Android的Mini TV无法识别为设备

  19. 19

    适用于经典AND BTLE设备的Android蓝牙扫描

  20. 20

    Ubuntu上适用于Android设备的最佳软件?

  21. 21

    适用于多种设备的Android通用启动画面

  22. 22

    Android适用于不同设备的常规缩放

  23. 23

    Ubuntu上适用于Android设备的最佳软件?

  24. 24

    Phonegap / Cordova地理位置不适用于Android 4.0+,但适用于所有其他平台

  25. 25

    是否有适用于Android移动设备的默认DotsPageIndicator(不易磨损)?

  26. 26

    如何制作适用于移动设备和平板电脑的自适应Android应用程序?

  27. 27

    Android-我按钮的onclick上的Null异常指针。适用于仿真器,但不适用于设备

  28. 28

    在Android模拟器中安装应用程序显示“此应用程序不适用于您的设备”

  29. 29

    RTC_WAKEUP不适用于所有设备

热门标签

归档