odnoklassniki / ok-android-sdk

Android SDK & samples for native apps integrated with OK.RU
Apache License 2.0
20 stars 28 forks source link

java.lang.String cannot be cast to java.lang.Long at ru.ok.android.external.LoginExternal$AuthWebViewClient.shouldOverrideUrlLoading(LoginExternal.java:199) #17

Closed afarber closed 7 years ago

afarber commented 7 years ago

Добрый день,

мне кажется есть проблемы во взаимодействии между ok-android-sdk и официальным приложением Odnoklassniki.

Я написал несложное приложение, которое получает access_token (использую credentials от официального примера):

    private OkListener mOdnoklassnikiCallback = new OkListener() {
        @Override
        public void onSuccess(final JSONObject json) {
            DatabaseService.fetchOdnoklassnikiUser(MainActivity.this);
        }

        @Override
        public void onError(String error) {
            Log.d(TAG, "Odnoklassniki onError: " + error);
        }
    };

и затем вызывает "users.getCurrentUser" из IntentService:

String jsonStr = Odnoklassniki.getInstance().request("users.getCurrentUser", null, OkRequestMode.DEFAULT);
JSONObject okUser = new JSONObject(jsonStr);
User user = new User(User.ODNOKLASSNIKI);
user.sid = okUser.getString("uid");
user.given = okUser.getString("first_name");
user.family = okUser.getString("last_name");
user.photo = okUser.getString("pic_3");

К сожалению, приложение иногда вылетает с ошибкой:

05-23 17:21:10.996 27448-27448/? W/Bundle: Attempt to cast generated internal exception:
                                           java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
                                               at android.os.BaseBundle.getLong(BaseBundle.java:835)
                                               at android.os.BaseBundle.getLong(BaseBundle.java:817)
                                               at ru.ok.android.external.LoginExternal$AuthWebViewClient.shouldOverrideUrlLoading(LoginExternal.java:199)
                                               at com.android.webview.chromium.WebViewContentsClientAdapter.shouldOverrideUrlLoading(WebViewContentsClientAdapter.java:357)
                                               at org.chromium.android_webview.AwContentsClient.shouldIgnoreNavigation(AwContentsClient.java:168)
                                               at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:352)
                                               at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
                                               at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:41)
                                               at android.os.Handler.dispatchMessage(Handler.java:102)
                                               at android.os.Looper.loop(Looper.java:148)
                                               at android.app.ActivityThread.main(ActivityThread.java:5459)
                                               at java.lang.reflect.Method.invoke(Native Method)
                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

Вот более полный лог:

                                                  --------- beginning of main
05-23 17:21:09.988 27481-27728/de.afarber.googleauth V/RenderScript: 0xb83cf038 Launching thread(s), CPUs 4
05-23 17:21:10.019 1788-3936/? I/ActivityManager: START u0 {cmp=ru.ok.android/.external.LoginExternal (has extras)} from uid 10184 on display 0
05-23 17:21:10.023 3813-8226/? D/ProcSpeedReader: Failed to read freq stats from null
05-23 17:21:10.042 21137-21137/? I/MemoryTrimmer: Trimming objects from memory, since app is in the background.
05-23 17:21:10.045 3813-8226/? D/ProcSpeedReader: Failed to read freq stats from null
05-23 17:21:10.088 27448-27467/? I/art: CollectorTransition marksweep + semispace GC freed 4406(43KB) AllocSpace objects, 1(16KB) LOS objects, 25% free, 10MB/13MB, paused 44.986ms total 44.986ms
05-23 17:21:10.106 27448-29686/? W/cr_BindingManager: Cannot setInForeground() - never saw a connection for the pid: 27448
05-23 17:21:10.110 1788-3856/? D/ConnectivityService: listenForNetwork for Listen from uid/pid:10166/27448 for NetworkRequest [ id=2274, legacyType=-1, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
05-23 17:21:10.189 1788-1807/? I/LaunchCheckinHandler: Displayed ru.ok.android/.external.LoginExternal,wp,ca,154
05-23 17:21:10.190 1788-1807/? I/ActivityManager: Displayed ru.ok.android/.external.LoginExternal: +155ms (total +219ms)
05-23 17:21:10.272 21137-21137/? I/MemoryTrimmer: Trimming objects from memory, since app is in the background.
05-23 17:21:10.579 27448-27448/? W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 27448
05-23 17:21:10.995 27448-27448/? W/Bundle: Key expires_in expected Long but value was a java.lang.String.  The default value 0 was returned.
05-23 17:21:10.996 27448-27448/? W/Bundle: Attempt to cast generated internal exception:
                                           java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
                                               at android.os.BaseBundle.getLong(BaseBundle.java:835)
                                               at android.os.BaseBundle.getLong(BaseBundle.java:817)
                                               at ru.ok.android.external.LoginExternal$AuthWebViewClient.shouldOverrideUrlLoading(LoginExternal.java:199)
                                               at com.android.webview.chromium.WebViewContentsClientAdapter.shouldOverrideUrlLoading(WebViewContentsClientAdapter.java:357)
                                               at org.chromium.android_webview.AwContentsClient.shouldIgnoreNavigation(AwContentsClient.java:168)
                                               at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:352)
                                               at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
                                               at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:41)
                                               at android.os.Handler.dispatchMessage(Handler.java:102)
                                               at android.os.Looper.loop(Looper.java:148)
                                               at android.app.ActivityThread.main(ActivityThread.java:5459)
                                               at java.lang.reflect.Method.invoke(Native Method)
                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-23 17:21:11.001 3813-8226/? D/ProcSpeedReader: Failed to read freq stats from null
05-23 17:21:11.013 308-308/? I/SFPerfTracer:      triggers: (rate: 8623:295997) (compose: 189:10654) (post: 3:4883) (render: 399:19535) (43:1400598 frames) (44:1675435)
05-23 17:21:11.014 308-308/? D/SFPerfTracer:        layers: (4:13) (FocusedStackFrame (0xb76c0988): 0:8853)* (DimLayer (0xb7735218): 0:139)* (DimLayer (0xb7737690): 0:4)* (StatusBar (0xb76cd838): 0:156803) (com.android.systemui.ImageWallpaper (0xb7771380): 0:6504)* (DimLayer (0xb777c060): 0:6462)* (DimLayer (0xb7774ef0): 0:1848)* (NavigationBar (0xb7768ea0): 0:174) (Toast (0xb76cae38): 0:64)- (de.afarber.googleauth/de.afarber.googleauth.MainActivity (0xb778ecf8): 0:48)- (de.afarber.googleauth/de.afarber.googleauth.MainActivity (0xb76cae38): 0:25)- (Toast (0xb7783bc8): 16:35) (ru.ok.android/ru.ok.android.external.LoginExternal (0xb7772648): 43:49) 
05-23 17:21:11.017 3813-8226/? D/ProcSpeedReader: Failed to read freq stats from null
05-23 17:21:11.021 27448-27448/? W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 27448
05-23 17:21:11.030 1788-3934/? W/ActivityManager: Duplicate finish request for ActivityRecord{92eb758 u0 de.afarber.googleauth/ru.ok.android.sdk.OkAuthActivity t4901 f}
05-23 17:21:11.029 3813-8226/? D/ProcSpeedReader: Failed to read freq stats from null
05-23 17:21:11.038 3813-8226/? D/ProcSpeedReader: Failed to read freq stats from null
05-23 17:21:11.043 27481-27481/de.afarber.googleauth D/AutoManageHelper: onStart true {0=com.google.android.gms.internal.zzaaa$zza@4821cfe}
05-23 17:21:11.057 27481-27728/de.afarber.googleauth I/OpenGLRenderer: Initialized EGL, version 1.4
05-23 17:21:11.114 3318-3831/? I/NetworkController.MotorolaMobileSignalController(1): MotorolaMobilePhoneStateListener.onDataActivity: Entered: direction=3
05-23 17:21:11.285 27481-30260/de.afarber.googleauth I/SQLiteAssetHelper: successfully opened database social.db

С уважением

lintax commented 7 years ago

Приложение действительно вылетает, или просто пишет ошибку в лог?

Тем не менее, спасибо, проблему в приложении подправим

afarber commented 7 years ago

Доброе утро, нет, мое приложение не вылетает, но в нем закрывается оранжевая activity от Одноклассников.

Вот еще один лог

LoginExternal-String-Long.txt

lintax commented 7 years ago

fixed within OK application