마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

다음 오류에 대한 문의입니다.

0 추천

다음과 같이 작성을 하였는데요

mHandler = new Handler(){    //블루투스 데이터 수신 핸들러
    public void handleMessage(Message msg){

        if(msg.what == MESSAGE_READ){

            try {
                readMessage = new String((byte[]) msg.obj, "UTF-8");
                if((readMessage.indexOf("s") == 0) && (readMessage.indexOf("e") == 21))  {
                    if(readMessage != null) { // readmessage와 null(빈값)은 같지 않다
                        test = readMessage.split("");
                        str0 = readMessage.substring(0,22);
                        str1 = readMessage.substring(1,7);                 // indexof - 데이터값이 01234 56789 00000 출력될때substring(0,5)일때
                        str2 = readMessage.substring(8,14);                // ex) substring(0,5)이면 01234까지
                        str3 = readMessage.substring(15,21);

                        // 모듈에서 넘어오는 데이터에 부호(+,-)값이 포함 되있음
                        // indexof에 부호값까지 포함함

                    }
                    else if(readMessage == null){
                        readMessage = str0;
                    }

                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

            mReadBuffer.setText(str0);
            mRead_X.setText(str1);             // setText str1값을 mRead_X에 출력
            mRead_Y.setText(str2);
            mRead_Z.setText(str3);

            String readBuffer_X = mRead_X.getText().toString();  // db에 저장
            String readBuffer_Y = mRead_Y.getText().toString();
            String readBuffer_Z = mRead_Z.getText().toString();

            Intent intent = new Intent(MainActivity.this, UnityPlayerActivity.class);
            intent.putExtra("test1",test);

            dbHelper.insert(readBuffer_X, readBuffer_Y, readBuffer_Z);
        }

        if(msg.what == CONNECTING_STATUS){
            if(msg.arg1 == 1)
                mBluetoothStatus.setText("Connected to Device: " + (String)(msg.obj));
            else
                mBluetoothStatus.setText("Connection Failed");
        }
    }
};

서브 액티비티

// Setup activity layout
@Override
protected void onCreate(Bundle savedInstanceState)
{
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();   // 인텐트로 받아오기
    //String name =  getIntent().getStringExtra("test");
    String name1 =  getIntent().getStringExtra("test1");
    //Log.i("test", name);
    Log.i("test1", name1);

    mUnityPlayer = new UnityPlayer(this);
    setContentView(mUnityPlayer);
    mUnityPlayer.requestFocus();
}

06-14 23:02:14.272 27985-27985/com.bh.slmple:unityplayer E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.bh.slmple:unityplayer, PID: 27985
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bh.slmple/com.bh.slmple.UnityPlayerActivity}: java.lang.NullPointerException: println needs a message
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
        at android.app.ActivityThread.-wrap14(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6776)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
     Caused by: java.lang.NullPointerException: println needs a message
        at android.util.Log.println_native(Native Method)
        at android.util.Log.i(Log.java:211)
        at com.bh.slmple.UnityPlayerActivity.onCreate(UnityPlayerActivity.java:36)
        at android.app.Activity.performCreate(Activity.java:6956)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) 
        at android.app.ActivityThread.-wrap14(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6776) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) 

 

 

초심자1 (790 포인트) 님이 2018년 6월 14일 질문
초심자1님이 2018년 6월 14일 수정

1개의 답변

0 추천
Log.i("test1", name1);

-->

if (name1 != null)
    Log.i("test1", name1);

 

유니티 내 Log.i() API는 message가 null이면 안되나 보네요.
디자이너정 (42,810 포인트) 님이 2018년 6월 15일 답변
아침부터 친절하게 알려주셨는데 에러가 출력이 되네요 ㅠㅠ
A/art: art/runtime/java_vm_ext.cc:470] JNI DETECTED ERROR IN APPLICATION: GetStringUTFChars received NULL jstring
    art/runtime/java_vm_ext.cc:470]     in call to GetStringUTFChars
    art/runtime/java_vm_ext.cc:470]     from void com.unity3d.player.UnityPlayer.nativeUnitySendMessage(java.lang.String, java.lang.String, java.lang.String)
    art/runtime/java_vm_ext.cc:470] "UnityMain" prio=5 tid=12 Runnable
    art/runtime/java_vm_ext.cc:470]   | group="main" sCount=0 dsCount=0 obj=0x12c84c40 self=0xe31c2900
    art/runtime/java_vm_ext.cc:470]   | sysTid=19616 nice=0 cgrp=default sched=0/0 handle=0xe4eff920
    art/runtime/java_vm_ext.cc:470]   | state=R schedstat=( 0 0 0 ) utm=143 stm=27 core=4 HZ=100
    art/runtime/java_vm_ext.cc:470]   | stack=0xe4dfd000-0xe4dff000 stackSize=1038KB
    art/runtime/java_vm_ext.cc:470]   | held mutexes= "mutator lock"(shared held)
    art/runtime/java_vm_ext.cc:470]   native: #00 pc 00351ee9  /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+128)
    art/runtime/java_vm_ext.cc:470]   native: #01 pc 00332405  /system/lib/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+304)
    art/runtime/java_vm_ext.cc:470]   native: #02 pc 0023a157  /system/lib/libart.so (_ZN3art9JavaVMExt8JniAbortEPKcS2_+846)
    art/runtime/java_vm_ext.cc:470]   native: #03 pc 0023a68f  /system/lib/libart.so (_ZN3art9JavaVMExt9JniAbortVEPKcS2_St9__va_list+58)
    art/runtime/java_vm_ext.cc:470]   native: #04 pc 000ca893  /system/lib/libart.so (_ZN3art11ScopedCheck6AbortFEPKcz+42)
    art/runtime/java_vm_ext.cc:470]   native: #05 pc 000ca077  /system/lib/libart.so (_ZN3art11ScopedCheck13CheckInstanceERNS_18ScopedObjectAccessENS0_12InstanceKindEP8_jobjectb+354)
    art/runtime/java_vm_ext.cc:470]   native: #06 pc 000c9535  /system/lib/libart.so (_ZN3art11ScopedCheck22CheckPossibleHeapValueERNS_18ScopedObjectAccessEcNS_12JniValueTypeE+184)
    art/runtime/java_vm_ext.cc:470]   native: #07 pc 000c8969  /system/lib/libart.so (_ZN3art11ScopedCheck5CheckERNS_18ScopedObjectAccessEbPKcPNS_12JniValueTypeE+800)
    art/runtime/java_vm_ext.cc:470]   native: #08 pc 000cf14f  /system/lib/libart.so (_ZN3art8CheckJNI22GetStringCharsInternalEPKcP7_JNIEnvP8_jstringPhbb+490)
    art/runtime/java_vm_ext.cc:470]   native: #09 pc 000c4ce1  /system/lib/libart.so (_ZN3art8CheckJNI17GetStringUTFCharsEP7_JNIEnvP8_jstringPh+24)
    art/runtime/java_vm_ext.cc:470]   native: #10 pc 00563b9c  /data/app/com.bh.slmple-2/lib/arm/libunity.so (???)
    art/runtime/java_vm_ext.cc:470]   native: #11 pc 0002b87d  /data/app/com.bh.slmple-2/oat/arm/base.odex (Java_com_unity3d_player_UnityPlayer_nativeUnitySendMessage__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2+144)
    art/runtime/java_vm_ext.cc:470]   at com.unity3d.player.UnityPlayer.nativeUnitySendMessage(Native method)
    art/runtime/java_vm_ext.cc:470]   at com.unity3d.player.UnityPlayer.UnitySendMessage(unavailable:-1)
    art/runtime/java_vm_ext.cc:470]   at com.bh.slmple.UnityPlayerActivity.CallAndroid(UnityPlayerActivity.java:47)
    art/runtime/java_vm_ext.cc:470]   at com.unity3d.player.UnityPlayer.nativeRender(Native method)
댓글에 첨부된 에러는, 등록된 질문과 전혀 다른 문제네요.
정확한 개발환경, 소스코드를 알 수 없으니 더 답변 드리기도 어렵습니다.
제가 답글을 잘못 적었네요....디자이너정님이 알려주신 코드로 수정하여 런하였더니 출력된 에러입니다...
...