来自扩展InputMethodService的类的getDefaultTracker()?

时间:2016-04-06 17:28:11

标签: java android google-analytics

我有一个我正在开发的Android键盘应用程序,它输出简单的符号而不是语言,所以说,我希望能够跟踪用户活动,因为没有敏感信息或者涉及的话。

问题在于,Android InputMethodService

},这使您可以访问Google Analytics' Android SDK(可能的措辞错误,在这里,随时纠正我)。

我已经按照指南here开始了,这是我为获取Application对象而引用的代码:

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; } } 没有曝光,那么该怎么做并不是很明显Google Analytics。

如何在扩展InputMethodService而非InputMethodService的类中使用Google Analytics(分析)Android SDK?

请告诉我,如果我的问题没有解决,我会尽我所能更新帖子。

1 个答案:

答案 0 :(得分:3)

您没有必要使用Application来使用Google Analytics' Android SDK。

该示例在getDefaultTracker类中添加了辅助方法Application,以集中并简化对默认跟踪器的访问。在大多数情况下,这将是最好的解决方案,因此该示例推荐了这种方法。但是有一些例外情况,这种解决方案不可行,例如InputMethodService

正如您在documentation中看到的,方法getInstance的参数是Context

  

public static GoogleAnalytics getInstance(Context context)

     

获取GoogleAnalytics的实例,并在必要时创建它。   从任何线程

调用此方法是安全的

因此,您可以直接在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