gpt4 book ai didi

android - 如何在android中获取浏览器历史记录?

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

我想实现一个应用程序来获取 android 默认浏览器历史记录并将浏览器历史记录保存到 xml 文件中。但是浏览器历史记录在某些设备中没有保存到 xml 文件中。

我已经实现了获取浏览器历史信息以保存到 xml 文件的应用程序,如下所示:

private void browserHistoryDOM() {
try{
File newxmlfile = new File("/sdcard/Xmlfiles/briwserHistory.xml");
newxmlfile.createNewFile();
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
Element rootElement = document.createElement("root");
document.appendChild(rootElement);

Cursor mCur = managedQuery(Browser.BOOKMARKS_URI,Browser.HISTORY_PROJECTION, null, null, null);
mCur.moveToFirst();

if (mCur.moveToFirst() && mCur.getCount() > 0) {
while (mCur.isAfterLast() == false) {
Element em = document.createElement("bookmarkIdx");
em.appendChild(document.createTextNode(mCur.getString(Browser.HISTORY_PROJECTION_BOOKMARK_INDEX)));
rootElement.appendChild(em);

long callDate = Long.parseLong(mCur.getString(Browser.HISTORY_PROJECTION_DATE_INDEX));
SimpleDateFormat datePattern = new SimpleDateFormat ("dd-MM-yyyy/h:m:s:a");
datePattern.setTimeZone(TimeZone.getTimeZone("GMT"));
String date_str = datePattern.format(new Date(callDate));

Element em1 = document.createElement("dateIdx");
em1.appendChild(document.createTextNode(date_str));
rootElement.appendChild(em1);

Element em2 = document.createElement("idIdx");
em2.appendChild(document.createTextNode(mCur.getString(Browser.HISTORY_PROJECTION_ID_INDEX)));
rootElement.appendChild(em2);

Element em3 = document.createElement("titleIdx");
em3.appendChild(document.createTextNode(mCur.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX)));
rootElement.appendChild(em3);

Element em4 = document.createElement("urlIdx");
em4.appendChild(document.createTextNode(mCur.getString(Browser.HISTORY_PROJECTION_URL_INDEX)));
rootElement.appendChild(em4);

Element em5 = document.createElement("visitsIdx");
em5.appendChild(document.createTextNode(mCur.getString(Browser.HISTORY_PROJECTION_VISITS_INDEX)));
rootElement.appendChild(em5);

long searchDate = Long.parseLong(mCur.getString(Browser.SEARCHES_PROJECTION_DATE_INDEX));
SimpleDateFormat datePattern1 = new SimpleDateFormat ("dd-MM-yyyy/h:m:s:a");
datePattern1.setTimeZone(TimeZone.getTimeZone("GMT"));
String date_str1 = datePattern.format(new Date(searchDate));

Element em6 = document.createElement("searchDateIdx");
em6.appendChild(document.createTextNode(date_str1));
rootElement.appendChild(em6);

Element em7 = document.createElement("searchIdx");
em7.appendChild(document.createTextNode(mCur.getString(Browser.SEARCHES_PROJECTION_SEARCH_INDEX)));
rootElement.appendChild(em7);

Element em8 = document.createElement("truncateIdIdx");
em8.appendChild(document.createTextNode(mCur.getString(Browser.TRUNCATE_HISTORY_PROJECTION_ID_INDEX)));
rootElement.appendChild(em8);

Element em9 = document.createElement("truncateOldest");
em9.appendChild(document.createTextNode(mCur.getString(Browser.TRUNCATE_N_OLDEST)));
rootElement.appendChild(em9);

mCur.moveToNext();
}
}

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(newxmlfile);
transformer.transform(source, result);

} catch (Exception e) {
e.printStackTrace();
}
}

通过使用上述方法,我可以获得浏览器历史记录并将数据保存到 sdcard 上的 xml 文件中。但是在某些类型的 android 设备中,无法完全获取浏览器历史记录并且不会保存到 xml 文件中。如果我测试摩托罗拉 Droid 设备上的应用程序然后它工作正常。但是如果我测试相同的应用程序我已经在 npm702 NOVO7PALADIN 上测试过应用程序然后我无法在我的 xml 文件中获取浏览器历史记录。

最佳答案

首先,永远不要硬连线/sdcard。使用 Environment.getExternalStorageDirectory() 获取外部存储的根目录。

其次,Browser.BOOKMARKS_URI 最多只能用于作为 Android 开源项目一部分的开源浏览器应用程序。欢迎设备制造商将该应用程序替换为不会在该 ContentProvider 中记录其历史记录、书签或任何其他内容的其他内容。同样,允许用户下载第三方浏览器,这些浏览器可能不会在 ContentProvider 中存储内容。

第三,NOVO7PALADIN 可能没有通过兼容性测试套件,特别是如果它没有预装 Google Play Store(以前称为 Android Market)。这意味着欢迎设备制造商破坏他们想要的任何东西,包括开源浏览器应用程序是否将内容存储在 ContentProvider 中。

您需要联系 NOVO7PALADIN 制造商以了解更多信息。

关于android - 如何在android中获取浏览器历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10393318/

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