У меня есть приложение для Android, которое работает с веб-браузером Android, и я подумал добавить в него аналитику google.Android-приложение и Google Analytics
Я следил за официальными инструкциями от here. Приложение продолжает работать исправно, но я не принимаю никакого ответа на сайте Google Analytics.
Ниже я покажу вам свой код, чтобы узнать, допустили ли я ошибки.
* В MainActivity вы можете видеть только те части кода, которые я изменяю для Google Analytics.
Импорт для Google Analytics
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
MainActivity.java
private WebView myWebView;
private Tracker mTracker;
private String name = new String("MyApp Main Screen");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
myWebView = (WebView) this.findViewById(R.id.webView1);
WebSettings settings = myWebView.getSettings();
settings.setJavaScriptEnabled(true);
myWebView.loadUrl("file:///android_asset/www/index.html");
myWebView.setVerticalScrollBarEnabled(false);
myWebView.setHorizontalScrollBarEnabled(false);
settings.setDomStorageEnabled(true);
settings.setDatabaseEnabled(true);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
settings.setDatabasePath("/data/data/" + myWebView.getContext().getPackageName() + "/databases/");
}
myWebView.addJavascriptInterface(new AudioInterface(this), "AndAud");
myWebView.addJavascriptInterface(new InternetInteface(this), "AndInChk");
myWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onExceededDatabaseQuota(String url,
String databaseIdentifier,
long currentQuota,
long estimatedSize,
long totalUsedQuota,
WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(estimatedSize * 2);
}
});
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// Obtain the shared Tracker instance.
AnalyticsApplication application = (AnalyticsApplication) getApplication();
mTracker = application.getDefaultTracker();
}
@Override
protected void onResume() {
/* myWebView.onResume(); */
myWebView.resumeTimers();
super.onResume();
mTracker.setScreenName(name);
mTracker.send(new HitBuilders.ScreenViewBuilder().build());
}
В предыдущем коде части для аналитика являются следующие
private Tracker mTracker;
private String name = new String("MyApp Main Screen");
//in onCreate class
// Obtain the shared Tracker instance.
AnalyticsApplication application = (AnalyticsApplication) getApplication();
mTracker = application.getDefaultTracker();
//in onResume class
mTracker.setScreenName(name);
mTracker.send(new HitBuilders.ScreenViewBuilder().build());
AnalyticsApplication.java
package com.r.movie.quiz;
import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
public class AnalyticsApplication extends Application {
private Tracker mTracker;
synchronized public Tracker getDefaultTracker() {
if (mTracker == null) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
mTracker = analytics.newTracker(R.xml.global_tracker);
}
return mTracker;
}
}
build.gradle -> уровень App
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.r.movie.quiz"
minSdkVersion 15
targetSdkVersion 23
versionCode 28
versionName "1.1.6"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.google.android.gms:play-services-analytics:8.4.0'
}
apply plugin: 'com.google.gms.google-services'
build.gradle -> уровень проекта
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'com.google.gms:google-services:2.0.0-alpha6'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.r.movie.quiz"
android:versionCode="28"
android:versionName="1.1.6">
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="23" />
<application
android:name=".AnalyticsApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="com.r.movie.quiz.MainActivity"
android:configChanges="orientation"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>
Activity_Main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.r.movie.quiz.MainActivity"
tools:ignore="MergeRootFrame" >
<WebView
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
Да, но я использую v4 Google Analytics, а EasyTracker создан для v3. Вы используете это: import com.google.analytics.tracking.android.EasyTracker; Но я импортировал Tracker вот так: import com.google.android.gms.analytics.Tracker; - это другой путь. –
Поддерживаются обе версии. Если новая версия не работает, используйте более раннюю версию. – Zoe
Спасибо моему другу, но если вы видите, я решил проблему! :) –