Java 从扩展InputMethodService的类获取DefaultTracker()?
我正在开发一款Android键盘应用程序,它输出的是简单的符号而不是语言,也就是说,我希望能够跟踪用户的活动,因为不涉及敏感信息或文字 问题是Android的Java 从扩展InputMethodService的类获取DefaultTracker()?,java,android,google-analytics,Java,Android,Google Analytics,我正在开发一款Android键盘应用程序,它输出的是简单的符号而不是语言,也就是说,我希望能够跟踪用户的活动,因为不涉及敏感信息或文字 问题是Android的InputMethodService没有扩展应用程序,这就是允许您访问Google Analytics的Android SDK的原因(这里可能有措辞错误,请随时更正) 我已经按照指南开始了,这是我获取跟踪器对象时引用的代码: /* * Copyright Google Inc. All Rights Reserved. * * Lic
InputMethodService
没有扩展应用程序
,这就是允许您访问Google Analytics的Android SDK的原因(这里可能有措辞错误,请随时更正)
我已经按照指南开始了,这是我获取跟踪器
对象时引用的代码:
/*
* 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;
}
}
这对于跟踪我的应用程序的主要活动非常有用,它基本上只是一个包含简短指令集的视图,带有几个广告和一个设置快捷方式
正如我之前所说,我想跟踪键盘,而如何做到这一点并不十分明显,因为InputMethodService
没有公开谷歌分析
如何在扩展InputMethodService
但不扩展应用程序的类中使用Google Analytics Android SDK?
请告诉我,如果我没有明确说明我的问题,我将以任何方式更新帖子。使用Google Analytics的Android SDK不需要
应用程序
该示例在应用程序
类中添加了helper方法getDefaultTracker
,以集中并简化对默认跟踪器的访问。在大多数情况下,这将是最好的解决方案,因此示例建议使用这种方法。但是也有一些例外情况,这种解决方案是不可行的,比如在InputMethodService
中
如图所示,方法的参数getInstance
是一个Context
:
公共静态GoogleAnalytics getInstance(上下文)
获取GoogleAnalytics的实例,并在必要时创建它。
从任何线程调用此方法都是安全的
因此,您可以在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
。太棒了,我来试一试。您知道为什么quick start示例建议使用包装器类访问跟踪器
?我认为这是大多数情况下的最佳解决方案。我只是更新了我的答案,试图澄清一下。