如何在应用程序中更改默认 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的操作栏中使用?

如何在 Xamarin.android 中更改条目光标颜色

如何更改 Android 应用中的默认活动?

如何在 Android 6.0 (API 23) 中继续使用浏览器书签更改

如何更改浏览器 怎么更改电脑默认浏览器

怎样更改浏览器默认设置