当前位置: 首页 > 面试题库 >

从扩展InputMethodService的类获取getDefaultTracker()?

邹海荣
2023-03-14
问题内容

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

问题是,Android的InputMethodService不会
延长Application,这是什么让你访问谷歌Analytics(分析)的Android SDK(可能用词错误,在这里,随时纠正我)。

我已经按照这里的指南开始使用,这是我用来获取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;
  }
}

这对于跟踪我的应用程序的主要活动非常有用,它基本上只是一个视图,其中包含简短的指令集以及几个广告和设置快捷方式。

正如我之前所说,我想跟踪 键盘 ,由于InputMethodService不公开Goog​​le
Analytics(分析),因此该操作并不十分清楚。

如何在扩展InputMethodService但不能扩展的类中利用Google Analytics(分析)Android SDK
Application

如果我的问题没有明确说明,请告诉我,我将尽一切可能更新此帖子。


问题答案:

您不必Application使用Google Analytics(分析)的Android SDK。

该示例getDefaultTrackerApplication类内添加了helper方法,以集中并简化对默认跟踪器的访问。在大多数情况下,这将是最好的解决方案,因此,本示例建议使用此方法。但是,在某些解决方案不可行的情况下,例如中的InputMethodService

正如你可以看到在文档的方法的参数getInstanceContext

公共静态GoogleAnalytics getInstance(上下文上下文)

获取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在服务的每种方法中使用这些方法。



 类似资料:
  • 问题内容: 我想从 MimeType* 获取 扩展名 。 * 例如: 要将文件保存在Windows或Linux上,我可以使用这种方法从URL下载文件。因此,我只能保存它而没有扩展名(我不想要那样)。 这种方法只允许我获取 MimeType 而不是 扩展名 。 如何使用MimeType编写带有扩展名的文件? 问题答案: 通常有两种方法: 具有MimeTypes到扩展名的映射; 使用某种逻辑进行计算;

  • 我想从一个mimetype中得到扩展。 例如: 为了在Windows或Linux上保存我的文件,我有一个方法,让我从URL下载文件。所以,我只能在没有扩展的情况下保存它(我不想那样)。 这个方法只允许我获取MimeType,而不是扩展。 如何使用MimeType编写扩展名的文件?

  • 问题内容: 我有两节课:和。后者声明为: 我需要的只是类中的方法(仅在其中,因为会有很多继承的类,而且我不想在所有这些类中都实现此方法),它将从静态调用返回类名。这是我在说的: 当我称它为: 但是父类中的每个声明只能访问父类变量,该变量的值为“ Action”。 有什么可行的方法吗? 问题答案: 总是返回使用该类的类的名称,因此使用静态方法并没有太大帮助。如果该方法不是静态的,则可以简单地使用ge

  • var_dump(xlswriter_get_version()); ​ // 输出:string(5) "1.3.7"

  • 我想获得扩展特定父类的子类列表。例如:考虑下面的情况,其中B类扩展类A,C类扩展类B。 我想从java代码中获取子类名列表。i、 我需要编写一个java类,当我输入父类的名称时,它可以给我子类的列表。 提前感谢。

  • cmf_get_file_extension($filename) 功能 获取文件扩展名 参数 $filename: string 文件名 返回 string 文件扩展名