如何检查Android默认浏览器是否已打开?

时间:2012-07-30 08:29:33

标签: android android-browser

  

可能重复:   How can I check if an app running on Android?

我想知道是否有办法检查Android默认浏览器(Android操作系统中的浏览器)是否已打开。假设它已打开,我想要显示一个祝酒词。我该如何以编程方式执行此操作?

这是我在扩展Service类的类中使用的代码,该类侦听日志并检查是否已打开Android默认浏览器。如果是,那么它会在LogCat中打印一条记录Android默认浏览器的日志。

try {
    Process mLogcatProc = null;
    BufferedReader reader = null;
    mLogcatProc = Runtime.getRuntime().exec(new String[] { "logcat", "-d" });

    reader = new BufferedReader(new InputStreamReader(mLogcatProc.getInputStream()));

    String line;
    final StringBuilder log = new StringBuilder();
    String separator = System.getProperty("line.separator");

    while ((line = reader.readLine()) != null) {
        log.append(line);
        log.append(separator);
    }
    String w = log.toString();
    Log.d("LogService", "The log is: " + w);

    if (w.contains("Starting activity: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.android.browser/.BrowserActivity }")) {
        Log.d("LogService", "The browser has been opened");
    }

}
catch (Exception e) {
    Log.d("LogService", "The stacktrace is: " + e.getMessage());
}

1 个答案:

答案 0 :(得分:2)

google在谷歌IO上表示,这种行为被视为恶意软件。

但是,在API 15(包括)之前,您可以使用侦听日志的服务,并检查是否已启动所需的应用程序。这是因为每次你运行一个应用程序时,android都会写一个关于它的日志。

这被视为一种解决方法,但很多应用程序都使用它并且工作正常。

不确定在新版本(API 16)上阅读日志是否会那么简单。他们说,从日志中读取的权限将不再有效,并且他们允许应用程序读取自己的日志(无需任何许可)。

当然,如果您要监控的应用程序提供任何类型的API来告诉全世界(例如通过意图)它已经启动,您可以使用它。我不认为内置的Web浏览器可以做到这一点。