我正在使用 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/