android - Android中如何获取当前的webview对象?

标签 android kotlin android-webview android-instrumentation

我正在使用 Datadog 来跟踪我的应用中的用户 Activity 。现在我需要检测 WebView 。之后initializing datadog's sdk ,它的文档说我必须调用以下代码 fragment :

DatadogEventBridge.setup(webView)

也就是说,我必须调用静态方法setup并向其传递一个WebView对象。但问题是:我的应用程序有很多这样的对象(很多 WebView )。我是否必须将此代码放入每个具有 WebView 属性的类中?或者是否可以以某种方式使用回调函数,该函数在启动 webview 时调用,在此回调中我将调用 DatadogEventBridge.setup(webView)?

我尝试使用生命周期回调,然后为每个“onResume”方法接收一个 Acitivty,以检查此 Activity 是否具有 WebView。但出了问题。

最佳答案

我不太熟悉 Datadog Sdk,但您可以尝试通过扩展标准 WebView 来创建自己的 WebView,然后用它替换所有其他 WebView。下面是它在实践中的样子:

class TrackableWebView : WebView {

    constructor(context: Context) : super(context)

    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)

    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int)
        : super(context, attrs, defStyleAttr)

    init {
        DatadogEventBridge.setup(this)
    }
}

我认为我们可以假设Sdk的初始化会比WebView早得多,因此在Sdk初始化之前调用DatadogEventBridge.setup(this)应该没有问题。

然后,如果您使用 XML 布局,则只需将标准 WebView 替换为您的自定义布局即可:

<com.example.TrackableWebView
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

关于android - Android中如何获取当前的webview对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74527241/

相关文章:

kotlin - Kotlin 中的大整数

kotlin - 如何并行运行多个 Kotlin 协程并等待它们完成后再继续

javascript - 添加 hardwareAccelerated 为 false 时的 Web View 滚动问题

java - 在Android模拟器上加载swf文件

android - Android Studio 中的 Proguard 不会删除日志记录

android - 蓝牙连接在 Android 中丢失

android - Jetpack 组成 : how to force a dropdownmenu to be anchored underneath its parent?

c# - WebView 即使应用程序处于后台/关闭时也如何运行(前台服务处于事件状态)

android - verifyCredentials 上的 Twitter4J 异常

android - 无法使用AndroidStudio和Ubuntu执行gradlew任务-无法创建ScriptPluginFactory类型的服务