将 Google Analytics“v4”集成到 Android 应用程序中

2023-12-26

感谢您的回答,但仍然不起作用。

我已经创建:

public class GAnalytics extends Application{

// The following line should be changed to include the correct property id.
private static final String PROPERTY_ID = "UA-XXXX-X";

public static int GENERAL_TRACKER = 0;

public enum TrackerName {
    APP_TRACKER, // Tracker used only in this app.
    GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
    ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
}

HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

public GAnalytics() {
    super();
}

synchronized Tracker getTracker(TrackerName trackerId) {
    if (!mTrackers.containsKey(trackerId)) {

        GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
        Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID)
                : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(
                        R.xml.global_tracker)
                        : analytics.newTracker(R.xml.ecommerce_tracker);
        mTrackers.put(trackerId, t);

    }
    return mTrackers.get(trackerId);
}

}

在我的 MainActivity 中的 OnCreate 下:

String ACTIVITY_NAME = "MyApp";
// Get tracker.
    Tracker t = ((GAnalytics) getApplication()).getTracker(TrackerName.APP_TRACKER);

    // Set screen name.
    // Where path is a String representing the screen name.
    t.setScreenName(ACTIVITY_NAME);

    // Send a screen view.
    t.send(new HitBuilders.AppViewBuilder().build());

我已在应用程序(android:名称...)下添加了清单

还有我的日志:

05-16 18:27:41.705:E/AndroidRuntime(25187):致命异常:主要 05-16 18:27:41.705:E / AndroidRuntime(25187):进程:com.MyApplication.Banana,PID:25187 05-16 18:27:41.705:E / AndroidRuntime(25187):java.lang.NoClassDefFoundError:com.google.android.gms.analytics.GoogleAnalytics 05-16 18:27:41.705:E / AndroidRuntime(25187):在com.MyApplication.Banana.GAnalytics.getTracker(GAnalytics.java:30) 05-16 18:27:41.705:E / AndroidRuntime(25187):在com.MyApplication.Banana.MainActivity.onCreate(MainActivity.java:56) 05-16 18:27:41.705:E / AndroidRuntime(25187):在android.app.Activity.performCreate(Activity.java:5231) 05-16 18:27:41.705:E / AndroidRuntime(25187):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 05-16 18:27:41.705:E / AndroidRuntime(25187):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 05-16 18:27:41.705:E / AndroidRuntime(25187):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 05-16 18:27:41.705: E/AndroidRuntime(25187): 在 android.app.ActivityThread.access$800(ActivityThread.java:135) 05-16 18:27:41.705: E/AndroidRuntime(25187): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 05-16 18:27:41.705:E / AndroidRuntime(25187):在android.os.Handler.dispatchMessage(Handler.java:102) 05-16 18:27:41.705:E / AndroidRuntime(25187):在android.os.Looper.loop(Looper.java:136) 05-16 18:27:41.705:E / AndroidRuntime(25187):在android.app.ActivityThread.main(ActivityThread.java:5017) 05-16 18:27:41.705:E / AndroidRuntime(25187):在java.lang.reflect.Method.invokeNative(本机方法) 05-16 18:27:41.705:E / AndroidRuntime(25187):在java.lang.reflect.Method.invoke(Method.java:515) 05-16 18:27:41.705: E/AndroidRuntime(25187): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 05-16 18:27:41.705:E / AndroidRuntime(25187):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 05-16 18:27:41.705:E / AndroidRuntime(25187):在dalvik.system.NativeStart.main(本机方法)


如您的链接中所述,与 GA 相关的代码应放置在Application类而不是Activity.

创建一个类扩展Application像这样:

public class MyApplication extends Application{
    //the tracker related code should be place here (the enum, getTracker, mTrackers)
}

然后在你的AndroidManifest.xml, 在下面application标签,替换android:name与上述MyApplication班级。

跟踪器代码应放置在Activity.oncreate方法如

public class MainActivity extends Activity {
.
.
.
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
// Get tracker.
    Tracker t = ((AnalyticsSampleApp) getApplication()).getTracker(
        TrackerName.APP_TRACKER);

    // Set screen name.
    // Where path is a String representing the screen name.
    t.setScreenName(path);

    // Send a screen view.
    t.send(new HitBuilders.AppViewBuilder().build());
}
.
.
.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Google Analytics“v4”集成到 Android 应用程序中 的相关文章

  • dagger.hilt.android.internal.managers.ViewComponentManager$FragmentContextWrapper 无法转换为 android.app.Activity

    我正在使用具有一些自定义视图实现的第三方库 在实现中 他们调用Utils showSoftKeyboard context as Activity 这与使用片段作为 AndroidEntryPoint 一起导致以下异常 java lang
  • 使用 ActiveAndroid 库存储 HashMap

    我有一堂课 Table name Control public class Control extends Model Column private String name Column private Map
  • android ndk 多点触控?

    我正在编写一个仅使用本机代码的应用程序 那么ndk中是否可以获取多点触控事件呢 我感觉我已经搜索了整个网络 但什么也没找到 有谁知道如何做到这一点 是的 您可以检查名为native activity查看如何获取输入事件 寻找engine h
  • 使用 setText 更改文本后如何更新屏幕?

    现在我正在使用以下代码来更新TextView txtMain setText new text 该代码执行后 屏幕不会更新新文本 有没有办法可以强制文本立即更新 该代码执行后 屏幕不会更新新文本 一旦您将控制权归还给 Android 就应该
  • 多种语言的多种字体

    我最近在开发应用程序时遇到了一种情况 我必须在文本视图中显示不同的语言 目前我正在展示一些使用字体 字体像这样 Typeface tf Typeface createFromAsset this getAssets DroidHindi t
  • 片段内容下方是否存在持久性 BottomSheet?

    Using a 持久底表 https material google com components bottom sheets html bottom sheets persistent bottom sheets 在一个协调器布局 htt
  • Google 地图位于活动的中间区域

    我正在使用 Android studio 2 1 2 我检查了一下 大多数问题要么使用旧版本的 Android studio 要么使用一些旧的类 这些类不适用于我的情况 从文件 gt 新项目 gt 我使用了选项Google Maps Act
  • 在android中从JSON生成listview

    我对 Android 完全陌生 目前正在尝试从从我的服务器中提取的 JSON 数组生成列表视图 我已经阅读了很多教程 但没有运气 有一种独特的方法可以做到这一点 请您指出一些适合开始的资源 我读过了this http www josecgo
  • 是否可以将自定义属性添加到 Android 资源的样式中?

    我在我的项目中使用视图流组件 它允许开发人员覆盖一些属性 例如
  • 将 android 蓝牙客户端套接字连接到 ubuntu 服务器套接字时出现问题

    我正在编写一个 Android 应用程序 它应该通过蓝牙与服务器交换数据 服务器端位于运行 Ubuntu 的 PC 上 使用 bluez 库 用 C 或 C 编写 当我尝试连接到 PC 上的服务器套接字时 我的 Android 应用程序失败
  • 表面视图+gl表面视图+框架布局

    我是 java 和 OpenGL 的新手 我正在尝试获得一个相机预览屏幕 能够 同时显示 3D 对象 浏览完样本后 api 演示 我想结合示例的代码 api 演示就足够了 但不知何故它不起作用 迫使我 启动时关闭 错误被称为空指针 例外 有
  • 通知声音不适用于 api 10 android

    我用这个功能来显示状态notification 一切正常 但没有声音播放notification public void notifiction main String ticker String title String text int
  • PhoneGap 1.4 封装 Sencha Touch 2.X - 性能怎么样?

    我正在构建一个多平台平板电脑应用程序 仅使用其 Webview 使用 Phonegap 1 4 对其进行包装 然后使用 Sencha Touch 2 框架发挥我的魔力 我所说的多平台是指 iOS 5 X 和 Android 3 0 目前 到
  • Jetpack Compose 中复选框中的透明复选标记

    在我的 Compose 应用程序中 我需要创建一个圆形复选框 我已经通过下面的代码实现了这一点 Composable fun CircleCheckBox isChecked Boolean modifier Modifier Modifi
  • 找不到数据库路径是不可能的

    我对 android 开发很陌生 现在我正在尝试通过扩展 SQLiteOpenHelper 的类创建数据库 我确信数据存储在我的 Nexus 7 我用来测试应用程序的设备 上的某个位置 但是我找不到数据库的路径 我四处寻找其他类似的问题 所
  • 在android中从SD卡上传图像到facebook

    我无法从 SD 卡上传 Facebook 上的图像 我使用了下面的代码 但它没有给我错误 但同时它没有上传图像 byte data null try FileInputStream fis new FileInputStream filep
  • React Native HTTPS Api 调用在 IOS 中有效,但在 Android 中无效

    所以基本上我所做的就是简单地对启用了 HTTPS 的 UAT 服务器进行简单的 Axios 调用 我已经在 IOS 中测试了整个应用程序 API 调用工作正常 但一旦我在 Android 中测试了相同的应用程序 在真正的 Android 设
  • android系统用户和linux root用户有什么区别

    当我将手机连接到电脑并使用adb shell与我的手机通信并输入的命令ps命令输出当前在我的手机上运行的进程信息 我发现有两个特殊用户 一个是root 另一个是system 据我所知 Android是基于linux的 所以root用户是最大
  • View.post(),以及当Runnables被执行时

    我最初的问题是需要知道我的根的高度和宽度View这样我就可以进行程序化的布局更改 就我的目的而言 我不一定需要在onCreate 对于我来说 以编程方式添加我的孩子就足够了View根布局完成后 因此我很乐意使用onWindowFocusCh
  • Keystore getEntry 在 Android 9 上返回 NULL

    c我已对存储在 Android 密钥库中的登录密码进行了加密和解密 在 Android 9 上 我观察到应用程序在尝试解密密码时崩溃 我无法重现它 但拥有 Pixel 3 的用户是崩溃的设备之一 下面是我如何从密钥库解密密码 private

随机推荐

  • 以编程方式编写 gui,还是使用高级 gui 编辑器(Java Swing)?

    我计划编写一个基于 Swing 的应用程序 使用 Netbeans 6 8 看来 Netbeans 有一个非常先进的 GUI 编辑器 我仍然对它生成的代码存有疑问 另外 我不喜欢代码部分被锁定的事实 我仍然理解这种需要 有人成功使用 Net
  • DbConnectionStringBuilder 在 PowerShell 中使用时不会解析

    我正在尝试使用以下功能DbConnectionStringBuilder用于解析类似连接字符串的用户输入 这在 C 中工作得很好 using System using System Data Common class Program sta
  • postgresql - 查询构建 json

    运行 PostgreSQL 9 6 2 我的数据以键 值对的形式存储在表中 key 实际上是一个json对象的路径 每一个都是一个属性 例如 如果键是 cogs props1 value 那么 json 对象将如下所示 cogs props
  • Python-将脚本安装到系统

    如何为我自己的脚本制作 setup py 文件 我必须使我的脚本全球化 将其添加到 usr bin 这样我就可以从控制台运行它 只需键入 scriptName 参数 操作系统 Linux EDIT 现在我的脚本可以安装了 但是如何使其全局化
  • JavaScript 立即函数

    Stoyan Stefanov 在 Javascript Patterns 中说道 你需要一个即时函数来将所有代码包装在其本地作用域中 并且不会将任何变量泄漏到全局作用域 第 70 页 这是他的例子 function var days Su
  • Angular 9 中的视频 JS - 实时视频 - “无法解决 videojs”问题?

    我正在努力让 videojs 在我的 Angular 9 应用程序中工作 我已经查看了所有现有的 stackoverflow 帖子 应用了他们的解决方案 查看了不同的博客文章和 github 来了解视频 js 的问题 但我仍然遇到 无法解决
  • 清除 mySql 中的电话号码字段

    不是数据库人员 而是 我混淆了我继承的 mySql 数据库中的数据 部分电话号码已格式化 512 555 1212 称之为肮脏 其他的5125551212 称之为干净 我需要一个 sqlstamet 说 UPDATE table name
  • UINavigationBar 不与 swift 4 中的 UICollectionView 重叠

    我将导航栏放在 swift 4 中的 UICollectionView 中 当我滚动 collectionView 时 它不会转到后层 而是与导航栏重叠 self collectionview contentInset UIEdgeInse
  • 常见 Linq 表达式的示例 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当我编写代码时 我开始确定可以使用 Linq 的地方 我的问题是我对语法还很陌生 我通过示例学习效果最好 但我似乎无法轻松找到我需要的
  • 如何禁用 Surface 4 Pro 中的 WPF 平板电脑支持?

    我继承了一个面向 Net 3 5 的 WPF 应用程序 并且必须将其安装在 Surface Pro 4 I5 中 应用程序挂在不同的点 我观察到动画有时永远不会触发已完成的事件 也许它们在某个点结束 但不是在 Duration 属性中表示的
  • 是否有最佳方法来部署架构以使用微服务模型发送短信?

    我们在后端类中有一个服务 该服务如下所示 Setup AWS SNS AWS config update region eu west 1 accessKeyId process env AWS ACCESS KEY ID secretAc
  • div的一部分透明?

    是否可以仅使 div 的一部分透明 就像 div 中的一定空间一样 例如 您从 div 顶部选择 100px 并且顶部 100px 设置了不透明度 我该怎么做呢 您可以做几件事 尝试使用一半透明而另一半不透明的背景图像 使用 CSS 渐变时
  • 绘制顺序是否会影响对象的深度位置? (包括图片)

    我的场景中有一些对象 即使我指定对象 A 的 y 10 最高的对象 从顶部摄像机我也可以通过对象 A 看到底部对象 这是我场景中的图像 直到今天我才发现一个有趣的属性 模型的绘制顺序很重要 我可能是错的 这是另一张图像 我更改了 ship1
  • 如何从 jQuery 选择器获取 DOM 元素?

    我很难找到真正的DOMElement来自 jQuery 选择器 示例代码
  • 打包许多小部件时的 Tkinter 性能

    我正在使用 Tkinter 在 python 中制作 GUI 并且在将许多小部件打包到屏幕上时遇到了一些性能问题 例如打包 50x50 的按钮网格需要几秒钟 这似乎是在屏幕上绘制 或排列 小部件的过程 这需要时间 我尝试过使用网格和位置几何
  • 将 jQuery 集成到现有的 ASP.NET Web 应用程序中?

    微软最近宣布 http weblogs asp net scottgu archive 2008 09 28 jquery and microsoft aspxJavascript HTML DOM 库jQuery 将被集成进入 ASP N
  • 我应该如何渲染 2D 手电筒效果?

    我正在尝试在 2D 游戏中制作手电筒效果 我的手电筒被表示为以特定角度从实体延伸的线段 手电筒可以指向任何方向 手电筒的强度 手电筒光束的长度 也有所不同 我在尝试找出渲染手电筒效果的最佳 最简单 和最灵活的方法时遇到问题 尤其是平铺地图
  • 单击按钮时显示警报

    我正在使用默认的 Facebook 嵌入代码 div div
  • 通过 Web 服务返回大量结果

    我目前正在开发一个网络服务 返回的结果可能会很大 gt 5mb 这组数据如此之大 并且 Web 服务可以称为同步或异步 这是完全有效的 但我想知道人们对以下内容有何想法 如果连接丢失 整个结果集必须是 重新生成并再次发送 有没有 我可以用任
  • 将 Google Analytics“v4”集成到 Android 应用程序中

    感谢您的回答 但仍然不起作用 我已经创建 public class GAnalytics extends Application The following line should be changed to include the cor