android - 如何查看Android默认浏览器是否已经打开?

标签 android android-browser

<分区>

Possible Duplicate: How can I check if an app running on Android?

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

这是我在扩展服务类的类中使用的代码,该类监听日志并检查是否已打开 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());
}

最佳答案

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

但是,在 API 15(包括)之前,您可以使用监听日志的服务,并检查所需的应用程序是否已启动。那是因为每次您运行应用程序时,android 都会将其写入日志。

这被认为是一种解决方法,但很多应用程序都在使用它并且效果很好。

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

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

关于android - 如何查看Android默认浏览器是否已经打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11717805/

相关文章:

javascript - HTML5 Canvas 在某些移动浏览器中的性能问题。

html - 同一个页面中相同的css样式,结果不同(安卓浏览器)

java - Android WebView黑屏问题如何解决?

android - Play 商店应用本地化

c# - 从 PC 以编程方式访问 Android 设备上的文件

html - @font-face 嵌入式字体不显示在 Android 浏览器选择标签中

android - TTF 字体是否适用于 Android 4.0.3 的默认浏览器?

javascript - 自定义 url 方案无法通过默认三星浏览器打开

java - Android 项目无法运行。显示错误

java - 更改 dalvik/libcore 会导致重建整个框架