Flurry SDK不会在会话启动时初始化

时间:2014-12-18 17:53:07

标签: java android flurry

当我将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)

4 个答案:

答案 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 functionSDK 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