- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个正在开发的 Android 键盘应用程序,它输出简单的符号而不是语言,也就是说,我希望能够跟踪用户 Activity ,因为不涉及敏感信息或文字。
问题是 Android 的 InputMethodService
确实不扩展Application
,它允许您访问 Google Analytics 的 Android SDK(可能的措辞错误,在这里,随时纠正我)。
我已遵循指南 here开始,这是我引用的获取 Tracker
对象的代码:
/*
* Copyright Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.samples.quickstart.analytics;
import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
/**
* This is a subclass of {@link Application} used to provide shared objects for this app, such as
* the {@link Tracker}.
*/
public class AnalyticsApplication extends Application {
private Tracker mTracker;
/**
* Gets the default {@link Tracker} for this {@link Application}.
* @return tracker
*/
synchronized public Tracker getDefaultTracker() {
if (mTracker == null) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
// To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
mTracker = analytics.newTracker(R.xml.global_tracker);
}
return mTracker;
}
}
这对于跟踪我的应用的主要 Activity 来说非常有用,它基本上只是一个 View ,其中包含带有几个广告和设置快捷方式的简短说明集。
正如我之前所说,我想跟踪键盘,但由于 InputMethodService
不公开 Google Analytics,所以如何做到这一点并不是很明显。
我如何在扩展 InputMethodService
但不扩展 Application
的类中使用 Google Analytics Android SDK?
如果我没有说清楚我的问题,请告诉我,我会尽我所能更新帖子。
最佳答案
您不必拥有 应用程序
即可使用 Google Analytics 的 Android SDK。
该示例在 Application
类中添加了辅助方法 getDefaultTracker
以集中和简化对默认跟踪器的访问。在大多数情况下,这将是最好的解决方案,因此示例推荐了这种方法。但也有一些异常(exception)情况,该解决方案不可行,例如在 InputMethodService
中。
正如您在 documentation 中看到的那样getInstance
方法的参数是一个 Context
:
public static GoogleAnalytics getInstance (Context context)
Gets the instance of the GoogleAnalytics, creating it when necessary. It is safe to call this method from any thread
因此,您可以直接在 InputMethodService
中使用完全相同的 getDefaultTracker
方法。例如:
public class InputMethodServiceSample extends InputMethodService {
private Tracker mTracker;
/**
* Gets the default {@link Tracker} for this {@link Application}.
* @return tracker
*/
synchronized public Tracker getDefaultTracker() {
if (mTracker == null) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
// To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
mTracker = analytics.newTracker(R.xml.global_tracker);
}
return mTracker;
}
}
然后您可以在服务的每个方法中使用方法 getDefaultTracker
。
关于java - 来自扩展 InputMethodService 的类的 getDefaultTracker()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36458222/
我有一个正在开发的 Android 键盘应用程序,它输出简单的符号而不是语言,也就是说,我希望能够跟踪用户 Activity ,因为不涉及敏感信息或文字。 问题是 Android 的 InputMet
我是一名优秀的程序员,十分优秀!