当我将flurry代码添加到我的活动中时崩溃说flurry sdk没有初始化,我已经检查以确保将库添加到项目库中,下面是我的代码和logcat,它也有导入乱码活性
@Override
protected void onStart() {
super.onStart();
FlurryAgent.onStartSession(this,"YOUR_API_KEY" );
FlurryAgent.setLogEnabled(true);
FlurryAgent.setLogEvents(true);
FlurryAgent.setLogLevel(Log.VERBOSE);
}
@Override
protected void onStop() {
super.onStop();
FlurryAgent.onEndSession(this);
}
logcat的
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.stephenh.daytrack.daytrackstephenh/com.stephenh.daytrack.daytrackstephenh.PageActivities.Exercises}: java.lang.IllegalStateException: Flurry SDK must be initialized before starting a session
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2263)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2313)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5212)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Flurry SDK must be initialized before starting a session
at com.flurry.android.FlurryAgent.onStartSession(SourceFile:328)
at com.stephenh.daytrack.daytrackstephenh.PageActivities.Exercises.onStart(Exercises.java:61)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1172)
答案 0 :(得分:17)
由于FlurryAgent未初始化并且您正在尝试启动会话,因此崩溃了。 所以,像这样初始化FlurryAgent:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// configure Flurry
FlurryAgent.setLogEnabled(false);
// init Flurry
FlurryAgent.init(this, MY_FLURRY_APIKEY);
}
}
稍后您可以启动和停止会话,如下所示:
@Override
protected void onStart()
{
super.onStart();
FlurryAgent.onStartSession(this, "YOUR_API_KEY");
}
@Override
protected void onStop()
{
super.onStop();
FlurryAgent.onEndSession(this);
}
答案 1 :(得分:5)
方法FlurryAgent.onStartSession(context, key);
已弃用,您需要先调用方法FlurryAgent.init(context, key);
,然后再调用FlurryAgent.onStartSession(context);
答案 2 :(得分:0)
我在启动活动中运行FlurryAgent.init(this, "myapikey");
,我在后续活动的onStart
上遇到了例外情况。
所以我再次打电话给FlurryAgent.init(this, "myapikey");
。没有问题,现在。
答案 3 :(得分:0)
自从最近两次Flurry更新以符合GDPR以来,它们分别具有depreciated the init function和SDK jar files。现在,您可以通过仅实现FlurryAgent.Builder类来初始化flurry。由于jar文件已弃用,并且很快将被删除,因此您现在应该将依赖项注入到应用程序构建gradle文件中。
构建gradle注入示例(使用11.1.0或更高版本的sdk,请不要使用sdk 11.0.0,因为它已被带有活动上下文错误的初始化所困扰)
repositories {
jcenter()
google()
}
dependencies {
implementation 'com.flurry.android:analytics:11.1.0@aar'
implementation 'com.flurry.android:ads:11.1.0@aar'
implementation 'com.google.android.gms:play-services:12.0.1'
}
下面是使用FlurryAgent.Builder初始化Flurry的示例:
new FlurryAgent.Builder().withLogEnabled(true).withLogLevel(Log.VERBOSE).withCaptureUncaughtExceptions(true)
.withContinueSessionMillis(10000).withConsent(new FlurryConsent(true, consentStrings))
.build(this, flurryAppId);
FlurryAgent.onStartSession(this);
要获得同意字符串以添加到生成器中以符合GDPR要求,我必须在github上实现privacy dash project。