2

私は自分の問題をグーグルで検索し、ここでスタックオーバーフローで解決策を検索しましたが、問題の解決策が見つかりませんでした. ANDROID_ID が既に Apps データベースに保存されているかどうかを確認する関数を実装しようとしています。デバイスの ANDROID_ID が null の場合、ランダムな UUID が作成され、DB に保存されます。私の問題は、「Ints.tryParse」を使用して文字列から数値を解析しようとするたびにnullが返され、アプリがクラッシュすることです。2 つの Galaxy S2 でこのアプリを試しました。それらの 1 つでクラッシュしますが、もう 1 つ (Android 4.1.2 CyanogenMod と 1 つの Stock 4.0) で動作します。エミュレーターでもクラッシュします。ところで、「Ints.tryParse」には Google Guava Library を使用しています。

コードは次のとおりです。

    UUID uuid;
    int finalresult = 0;
    String android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
    Log.v(TAG, "Android ID: " + android_id);
    String androidid = CharMatcher.DIGIT.retainFrom(android_id);
    Log.v(TAG, "Int0: " + androidid);
    Integer on2 = Ints.tryParse(androidid);
    if(on2 != null) {
        if(DEBUG_STATUS == 1) {
            Log.v(TAG, "Integer is: " + Integer.toString(on2));
        }
        int times = 3;
        finalresult = on2*times;
        if(DEBUG_STATUS == 1) {
            Log.v(TAG, "Result: " + Integer.toString(finalresult));
            Log.v(TAG, "Device ID: " + android_id + Integer.toString(finalresult));
        }
    }
    else
    {   
        uuid = UUID.randomUUID();
        String uuuid = CharMatcher.DIGIT.retainFrom(uuid.toString());
        Integer randomuuid = Ints.tryParse(uuuid);

        if(randomuuid == null) {
            Log.v(TAG, "Was null again...");
        }
        if(DEBUG_STATUS == 1) {
            Log.v(TAG, "Integer null!");
            Log.v(TAG, uuuid);
            Log.v(TAG, "UUID: " + randomuuid.toString());
        }
        int times = 3;
        finalresult = randomuuid.intValue()*times;
    }

エミュレーター (Android 2.3.3) の LogCat は次のとおりです。

> 12-01 16:14:22.505: V/******(410): Android ID: ea58466ebe002707 

> 12-01 16:14:51.845:V/******(410): Int0: 58466002707

> 12-01 16:14:51.865: V/******(410): Was null again...

> 12-01 16:14:51.875: V/******(410): Integer null!

> 12-01 16:14:51.875: V/******(410): 801094028350597

> 12-01 16:14:51.925: E/AndroidRuntime(410): FATAL EXCEPTION: main
> 12-01 16:14:51.925: E/AndroidRuntime(410): java.lang.RuntimeException:Unable to start activity ComponentInfo{*****/******}:
> .lang.NullPointerException 12-01 16:14:51.925:
> E/AndroidRuntime(410):    at
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
> 12-01 16:14:51.925: E/AndroidRuntime(410):    at
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
> 12-01 16:14:51.925: E/AndroidRuntime(410):    at
> android.app.ActivityThread.access$1500(ActivityThread.java:117) 12-01
> 16:14:51.925: E/AndroidRuntime(410):  at
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
> 12-01 16:14:51.925: E/AndroidRuntime(410):    at
> android.os.Handler.dispatchMessage(Handler.java:99) 12-01
> 16:14:51.925: E/AndroidRuntime(410):  at
> android.os.Looper.loop(Looper.java:123) 12-01 16:14:51.925:
> E/AndroidRuntime(410):    at
> android.app.ActivityThread.main(ActivityThread.java:3683) 12-01
>  16:14:51.925: E/AndroidRuntime(410):     at
> java.lang.reflect.Method.invokeNative(Native Method) 12-01
> 16:14:51.925: E/AndroidRuntime(410):  at
> java.lang.reflect.Method.invoke(Method.java:507) 12-01 16:14:51.925:
> E/AndroidRuntime(410):    at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
> 12-01 16:14:51.925: E/AndroidRuntime(410):    at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 12-01
> 16:14:51.925: E/AndroidRuntime(410):  at
> dalvik.system.NativeStart.main(Native Method) 12-01 16:14:51.925:
> E/AndroidRuntime(410): Caused by: java.lang.NullPointerException 12-01
> 16:14:51.925: E/AndroidRuntime(410):  at
> com.actionbarsherlock.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:526)
> 12-01 16:14:51.925: E/AndroidRuntime(410):    at
> com.actionbarsherlock.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:452)
> 12-01 16:14:51.925: E/AndroidRuntime(410):    at
> com.actionbarsherlock.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:438)
> 12-01 16:14:51.925: E/AndroidRuntime(410):    at
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
> 12-01 16:14:51.925: E/AndroidRuntime(410):    at
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
> 12-01 16:14:51.925: E/AndroidRuntime(410):    ... 11 more

正直なところ、何が問題なのかわかりません...ご覧のとおり、文字列は空ではなく、実際にはデバイスからの ANDROID_ID を示しています。

必要な情報がさらにある場合は、必要なものを教えてください。投稿を編集します。

4

1 に答える 1

3

= 2 147 483 647であるため、の代わりにLong( )を使用しますが、は58 466 002 707であり、801 094 028350597 です。は9223372 036 854775807です。Long.parseLong()IntegerInteger.MAX_VALUEandroid_idUUIDLong.MAX_VALUE

于 2012-12-01T16:56:34.937 に答える