web-dev-qa-db-fra.com

Comment obtenir Chrome Historique et signets dans Android Marshmallow (API> = 23)?

Jusqu'au niveau 22 de l'API (c'est-à-dire jusqu'à Lollipop), il y avait un moyen de lire l'historique et les signets de l'application Chrome (comme indiqué dans ce fil ) en utilisant l'autorisation com.Android.browser.permission.READ_HISTORY_BOOKMARKS.

Maintenant, dans Android API = 23 Marshmallow, puisque tout le système de signets du navigateur a été supprimé dans Marshmallow ( change here ), la méthode ci-dessus ne fonctionne plus.

Voici le fil qui montre pourquoi ce n'est plus possible.

Jusqu'à présent, dans mes recherches, je n'ai pas trouvé de bonnes nouvelles. Google a définitivement tué la fonction Signets système ( ici & ici ), la question est de savoir si Chrome Browser l'exposerait de quelque manière que ce soit?

Existe-t-il un remplacement/moyen de lire les signets et l'historique de Chrome (même Chrome spécifique répondrait à cette question) à l'avenir dans Android Guimauve?

25
user1406716

Contrairement à la documentation citée, com.Android.browser.permission.READ_HISTORY_BOOKMARKS Est toujours défini par le framework, et peut toujours être obtenu par les applications. Malheureusement, sur Marshmallow et versions ultérieures, Chrome vérifie une autorisation différente, celle que les applications normales ne sont pas autorisées à obtenir. Pour des raisons de compatibilité, lorsque cette vérification d'autorisation échoue inévitablement, Chrome renvoie zéro ligne au lieu de lancer un SecurityException.

Vous pouvez voir le code source ici:

query() appelle hasReadAccess() , qui appelle hasPermission("com.Android.browser.permission.READ_HISTORY_BOOKMARKS") , qui sur l'API > = M ignore l'argument d'autorisation et vérifie plutôt com.Android.chrome.permission.READ_WRITE_BOOKMARK_FOLDERS . Cette autorisation est limitée aux applications système et aux applications signées avec la clé de Google.

7
j__m