我有一个正在开发的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? 如果我的问题没有明确说明,请告诉我,我将尽一切可能更新该帖子。
最佳答案
您不必具有Application
即可使用Google Analytics(分析)的Android SDK。
该示例在getDefaultTracker
类内添加了辅助方法Application
,以集中并简化对默认跟踪器的访问。在大多数情况下,这将是最好的解决方案,因此,本示例建议使用此方法。但是有一些异常(exception),这种解决方案不可行,例如InputMethodService
中。
如您在documentation中看到的,getInstance
方法的参数是Context
:
因此,您可以在getDefaultTracker
内部直接使用完全相同的InputMethodService
方法。例如:
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/