如何在应用程序中更改默认 Android 浏览器的主页?
Posted
技术标签:
【中文标题】如何在应用程序中更改默认 Android 浏览器的主页?【英文标题】:How to change the default Android browser's homepage within an app? 【发布时间】:2012-03-20 10:28:47 【问题描述】:在我的应用程序中,是否可以通过编程方式更改 android 浏览器的主页 url?如果是这样,我该如何做到这一点?
例如,如果您使用 Android 2.3(我已经测试过)运行这个流行的应用程序,它会将您的主页更改为 http://www.searchmobileonline.com -- https://market.android.com/details?id=goldenshorestechnologies.brightestflashlight.free
谢谢!
【问题讨论】:
你能找到解决办法吗? @Robert Bana 您是否找到任何解决方案,然后请在***.com/questions/18356188/… 上发布您的答案。会有帮助的 【参考方案1】:这无法在您的应用中以编程方式完成。
编辑:我下载了您提供的应用程序,它似乎可以满足您的需求。具体是怎么做的,我不知道。我在网上找不到任何有关如何执行此操作的信息。我很想看看是否有人对他们如何实现这一点有任何想法。
【讨论】:
这很漂亮。否则这将是恶意软件的噩梦 同意。这是为了最好的 IMO。 你确定这不可能吗?我的 Android 浏览器主页被一个应用程序更改了。绝对不是我自己改的。 Android Dev Docs on the Browser。我不确定你的情况发生了什么,但据我所知这是不可能的。 如果您在 Android 2.3 上运行此应用(我已经测试过),它会将您的主页更改为 searchmobileonline.com -- market.android.com/…【参考方案2】:我有一个意见: 也许你可以阅读浏览器的源代码,找到这样的代码:
SharedPreferences prefs = mContext.getSharedPreferences(RECOVERY_PREFERENCES, Context.MODE_PRIVATE);
并获取Browser的SharedPreferences,然后找到设置主页的地方,更改它。 这可能吗?
【讨论】:
【参考方案3】:这个我自己没试过,但是BrowserSettings有一个公共接口setHomePage:
public void setHomePage(Context context, String url)
Editor ed = PreferenceManager.
getDefaultSharedPreferences(context).edit();
ed.putString(PREF_HOMEPAGE, url);
ed.commit();
homeUrl = url;
在 BrowserBookmarksPage 中使用如下:
BrowserSettings.getInstance().setHomePage(this, [URL]);
但只能从该包访问 BrowserSettings 类。所以也许访问共享首选项更容易......?
更多...
真的不是来上课的。有可能这样做,也许是一些本机代码使用浏览器的首选项或其他类似方式访问 XML 文件,但是......
无论您做什么,这都会“绕过” 地方。您的应用应该无法更改 浏览器(或者在文档中) 即使有可能找到一种方法(通过 NDK 或找到未记录的接口),它很可能会在某个时候停止使用某些新版本的 Android,这可能不是您想要的。 我知道有些应用程序已经这样做了,恕我直言,这很糟糕。并不意味着您的应用应该做同样的事情并让更多潜在用户感到沮丧。【讨论】:
找不到BrowserSettings类 @FarhanMunir,这就是它在这个答案中已经说过的,它只能从框架中的那个 android 包中访问。【参考方案4】:我猜应用程序开发人员并没有在他的代码中编写它来做到这一点。我认为他在他的应用中拥有的 11 个广告 sdk 之一是导致它的原因。
他有
adserver.adview
adwhirl
amobee.onlinehapi
apperhand
google
inmobi.androidsdk
jumptap.adtag
mdotm.android.ads
millenialmedia.android
mobclix.android.sdk
zestadz.android
顺便说一句,这很荒谬。
【讨论】:
【参考方案5】:无法更改浏览器的主页网址。
com.android.browser
使用MODE_PRIVATE
打开/创建首选项。所以文件的属性变成了-rw-rw----
而且浏览器应用程序的清单也没有 sharedUserId 属性。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.browser">
应用不提供分享应用偏好文件的机会。
【讨论】:
你能找到另一种方法吗【参考方案6】:我编写了名为“我的主页”(https://play.google.com/store/apps/details?id=com.aac.myhomepage) 的应用程序,我需要在其中完成这项确切的任务。我到处寻找,但找不到这样做的方法,所以我最终使用了两种解决方法,在我看来这确实不是很好的选择。
1) 我为那些拥有 root 设备的用户提供了一个 root 选项,我只需访问浏览器的 SharedPreferences XML 文件,并使用正则表达式将主页的值替换为所需的值。
2) 将 URL 复制到剪贴板,并告诉用户如何完成更改默认主页。
请注意,我没有在未经用户许可的情况下使用 root 访问权限,也没有在未经用户许可的情况下更改主页。这是应用程序的目的,主页不会在用户未明确更改的情况下更改。
我最近注意到广告 SDK 正在这样做,但有些事情告诉我,他们没有以适当的方式这样做,我对此没有任何兴趣
【讨论】:
以上是关于如何在应用程序中更改默认 Android 浏览器的主页?的主要内容,如果未能解决你的问题,请参考以下文章
如何更改SearchView上的默认图标,以便在Android的操作栏中使用?