안드로이드 카카오 커스텀 말풍선에대해서

제가 안드로이드에서 마커를 띄운 다음 커스텀 말풍선 띄우려고하는데 이런 에러가 나서 도저히 에러를 못잡겠네요… 도와주세요

A/zygote: java_vm_ext.cc:534] JNI DETECTED ERROR IN APPLICATION: JNI FindClass called with pending exception java.lang.NullPointerException: Attempt to invoke virtual method ‘android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()’ on a null object reference
java_vm_ext.cc:534] at void net.daum.mf.map.api.MapView.prepareCalloutBalloonImageAndCallback(int, boolean) (MapView.java:2734)
java_vm_ext.cc:534] at void net.daum.mf.map.n.api.internal.NativeMapGraphicsViewGles.onUiEventMapView(net.daum.mf.map.n.api.NativeMapViewUiEvent) (NativeMapGraphicsViewGles.java:-2)
java_vm_ext.cc:534] at void net.daum.android.map.MapView.onUiEvent(net.daum.mf.map.n.api.NativeMapViewUiEvent) (MapView.java:246)
java_vm_ext.cc:534] at void net.daum.android.map.MapView.onDrawFrame(javax.microedition.khronos.opengles.GL10) (MapView.java:191)
java_vm_ext.cc:534] at void net.daum.mf.map.api.MapView.onDrawFrame(javax.microedition.khronos.opengles.GL10) (MapView.java:2356)
java_vm_ext.cc:534] at void android.opengl.alt.GLSurfaceView$GLThread.guardedRun() (GLSurfaceView.java:1381)
java_vm_ext.cc:534] at void android.opengl.alt.GLSurfaceView$GLThread.nativeRun() (GLSurfaceView.java:1181)
java_vm_ext.cc:534] at void net.daum.mf.map.n.api.NativeThread.run() (NativeThread.java:48)
java_vm_ext.cc:534]
java_vm_ext.cc:534] in call to FindClass
java_vm_ext.cc:534] from void net.daum.mf.map.n.api.internal.NativeMapGraphicsViewGles.onUiEventMapView(net.daum.mf.map.n.api.NativeMapViewUiEvent)
java_vm_ext.cc:534] “GLThread 21929” prio=7 tid=43 Runnable
java_vm_ext.cc:534] | group=“main” sCount=0 dsCount=0 flags=0 obj=0x12dc0050 self=0xcb71bc00
java_vm_ext.cc:534] | sysTid=13193 nice=-4 cgrp=default sched=0/0 handle=0xc817f970
java_vm_ext.cc:534] | state=R schedstat=( 0 0 0 ) utm=173 stm=31 core=0 HZ=100
java_vm_ext.cc:534] | stack=0xc807d000-0xc807f000 stackSize=1038KB
java_vm_ext.cc:534] | held mutexes= “mutator lock”(shared held)
java_vm_ext.cc:534] native: #00 pc 002eedcf /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*)+130)
java_vm_ext.cc:534] native: #01 pc 003844db /system/lib/libart.so (art::thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits>&, bool, BacktraceMap*, bool) const+206)
java_vm_ext.cc:534] native: #02 pc 00380a57 /system/lib/libart.so (art::thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits>&, bool, BacktraceMap*, bool) const+34)
java_vm_ext.cc:534] native: #03 pc 0025187f /system/lib/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+738)
java_vm_ext.cc:534] native: #04 pc 00251bf7 /system/lib/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+58)
java_vm_ext.cc:534] native: #05 pc 000d7433 /system/lib/libart.so (art::ScopedCheck::AbortF(char const*, …)+46)
java_vm_ext.cc:534] native: #06 pc 000d6fab /system/lib/libart.so (art::ScopedCheck::CheckThread(_JNIEnv*)+274)
java_vm_ext.cc:534] native: #07 pc 000d596d /system/lib/libart.so (art::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::JniValueType*)+596)
java_vm_ext.cc:534] native: #08 pc 000c2567 /system/lib/libart.so (art::CheckJNI::FindClass(_JNIEnv*, char const*)+450)
java_vm_ext.cc:534] native: #09 pc 000cc938 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
java_vm_ext.cc:534] native: #10 pc 0008ed00 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
java_vm_ext.cc:534] native: #11 pc 0008edc8 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
java_vm_ext.cc:534] native: #12 pc 000ac200 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
java_vm_ext.cc:534] native: #13 pc 000b1724 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
java_vm_ext.cc:534] native: #14 pc 000ad690 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
java_vm_ext.cc:534] native: #15 pc 000b5d5c /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
java_vm_ext.cc:534] native: #16 pc 0008abb0 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
java_vm_ext.cc:534] native: #17 pc 0000720d /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/oat/arm/base.odex (Java_net_daum_mf_map_n_api_internal_NativeMapGraphicsViewGles_onUiEventMapView__Lnet_daum_mf_map_n_api_NativeMapViewUiEvent_2+92)
java_vm_ext.cc:534] at net.daum.mf.map.n.api.internal.NativeMapGraphicsViewGles.onUiEventMapView(Native method)
A/zygote: java_vm_ext.cc:534] at net.daum.android.map.MapView.onUiEvent(MapView.java:246)
java_vm_ext.cc:534] at net.daum.android.map.MapView.onDrawFrame(MapView.java:191)
java_vm_ext.cc:534] at net.daum.mf.map.api.MapView.onDrawFrame(MapView.java:2356)
java_vm_ext.cc:534] at android.opengl.alt.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1381)
java_vm_ext.cc:534] at android.opengl.alt.GLSurfaceView$GLThread.nativeRun(GLSurfaceView.java:1181)
java_vm_ext.cc:534] at net.daum.mf.map.n.api.NativeThread.run(NativeThread.java:48)
java_vm_ext.cc:534]
runtime.cc:542] Runtime aborting…
runtime.cc:542]
runtime.cc:550] JNI DETECTED ERROR IN APPLICATION: JNI FindClass called with pending exception java.lang.NullPointerException: Attempt to invoke virtual method ‘android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()’ on a null object reference
runtime.cc:550] at void net.daum.mf.map.api.MapView.prepareCalloutBalloonImageAndCallback(int, boolean) (MapView.java:2734)
runtime.cc:550] at void net.daum.mf.map.n.api.internal.NativeMapGraphicsViewGles.onUiEventMapView(net.daum.mf.map.n.api.NativeMapViewUiEvent) (NativeMapGraphicsViewGles.java:-2)
runtime.cc:550] at void net.daum.android.map.MapView.onUiEvent(net.daum.mf.map.n.api.NativeMapViewUiEvent) (MapView.java:246)
runtime.cc:550] at void net.daum.android.map.MapView.onDrawFrame(javax.microedition.khronos.opengles.GL10) (MapView.java:191)
runtime.cc:550] at void net.daum.mf.map.api.MapView.onDrawFrame(javax.microedition.khronos.opengles.GL10) (MapView.java:2356)
runtime.cc:550] at void android.opengl.alt.GLSurfaceView$GLThread.guardedRun() (GLSurfaceView.java:1381)
runtime.cc:550] at void android.opengl.alt.GLSurfaceView$GLThread.nativeRun() (GLSurfaceView.java:1181)
runtime.cc:550] at void net.daum.mf.map.n.api.NativeThread.run() (NativeThread.java:48)
runtime.cc:550]
runtime.cc:550] in call to FindClass
runtime.cc:550] from void net.daum.mf.map.n.api.internal.NativeMapGraphicsViewGles.onUiEventMapView(net.daum.mf.map.n.api.NativeMapViewUiEvent)
runtime.cc:550] “GLThread 21929” prio=7 tid=43 Runnable
runtime.cc:550] | group=“main” sCount=0 dsCount=0 flags=0 obj=0x12dc0050 self=0xcb71bc00
runtime.cc:550] | sysTid=13193 nice=-4 cgrp=default sched=0/0 handle=0xc817f970
runtime.cc:550] | state=R schedstat=( 0 0 0 ) utm=173 stm=31 core=0 HZ=100
runtime.cc:550] | stack=0xc807d000-0xc807f000 stackSize=1038KB
runtime.cc:550] | held mutexes= “mutator lock”(shared held)
runtime.cc:550] native: #00 pc 002eedcf /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*)+130)
runtime.cc:550] native: #01 pc 003844db /system/lib/libart.so (art::thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits>&, bool, BacktraceMap*, bool) const+206)
runtime.cc:550] native: #02 pc 00380a57 /system/lib/libart.so (art::thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits>&, bool, BacktraceMap*, bool) const+34)
runtime.cc:550] native: #03 pc 0025187f /system/lib/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+738)
runtime.cc:550] native: #04 pc 00251bf7 /system/lib/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+58)
runtime.cc:550] native: #05 pc 000d7433 /system/lib/libart.so (art::ScopedCheck::AbortF(char const*, …)+46)
runtime.cc:550] native: #06 pc 000d6fab /system/lib/libart.so (art::ScopedCheck::CheckThread(_JNIEnv*)+274)
runtime.cc:550] native: #07 pc 000d596d /system/lib/libart.so (art::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::JniValueType*)+596)
runtime.cc:550] native: #08 pc 000c2567 /system/lib/libart.so (art::CheckJNI::FindClass(_JNIEnv*, char const*)+450)
runtime.cc:550] native: #09 pc 000cc938 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
runtime.cc:550] native: #10 pc 0008ed00 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
runtime.cc:550] native: #11 pc 0008edc8 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
runtime.cc:550] native: #12 pc 000ac200 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
runtime.cc:550] native: #13 pc 000b1724 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
runtime.cc:550] native: #14 pc 000ad690 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
runtime.cc:550] native: #15 pc 000b5d5c /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
runtime.cc:550] native: #16 pc 0008abb0 /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/base.apk (???)
runtime.cc:550] native: #17 pc 0000720d /data/app/com.mjinfo.lx-VwbMwcgHBbPubM-D6BY8lw==/oat/arm/base.odex (Java_net_daum_mf_map_n_api_internal_NativeMapGraphicsViewGles_onUiEventMapView__Lnet_daum_mf_map_n_api_NativeMapViewUiEvent_2+92)
runtime.cc:550] at net.daum.mf.map.n.api.internal.NativeMapGraphicsViewGles.onUiEventMapView(Native method)
runtime.cc:550] at net.daum.android.map.MapView.onUiEvent(MapView.java:246)
runtime.cc:550] at net.daum.android.map.MapView.onDrawFrame(MapView.java:191)
runtime.cc:550] at net.daum.mf.map.api.MapView.onDrawFrame(MapView.java:2356)
runtime.cc:550] at android.opengl.alt.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1381)
runtime.cc:550] at android.opengl.alt.GLSurfaceView$GLThread.nativeRun(GLSurfaceView.java:1181)
runtime.cc:550] at net.daum.mf.map.n.api.NativeThread.run(NativeThread.java:48)
runtime.cc:550]
A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 13193 (GLThread 21929), pid 13025 (com.mjinfo.lx)
A/zygote: runtime.cc:550]

제 소스입니다.
package com.mjinfo.lx.landon.survrect;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.mjinfo.lx.R;
import com.mjinfo.lx.landon.survrect.vo.SurvrectVO;
import com.mjinfo.lx.landon.util.BaseActivityLandon;

import net.daum.mf.map.api.CalloutBalloonAdapter;
import net.daum.mf.map.api.MapPOIItem;
import net.daum.mf.map.api.MapPoint;
import net.daum.mf.map.api.MapView;

import java.util.ArrayList;

public class SurveyListMap extends BaseActivityLandon implements View.OnClickListener, MapView.MapViewEventListener {

private Button btnbranchMapBack, btnLocation;
private static final int GPS_ENABLE_REQUEST_CODE = 2001;
private static final int PERMISSIONS_REQUEST_CODE = 100;
String[] REQUIRED_PERMISSIONS = {android.Manifest.permission.ACCESS_FINE_LOCATION};
private ViewGroup mapViewContainer;
private MapView mapView;
private MapPoint.GeoCoordinate mapPointGeo;

public static Context context;
public SurveyListMap activity;
private static final String LOG_TAG = “SurveyListMap”;
private View mCalloutBalloon;

public SurveyListMap(){

}

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    setContentView(R.layout.landon_activity_syrvey_map);
    super.onCreate(savedInstanceState);
    mCalloutBalloon =  getLayoutInflater().inflate(R.layout.landon_activity_customball, null);
    initWidgets();

    mapView = new MapView(this);
    mapViewContainer = findViewById(R.id.map_view);
    mapViewContainer.addView(mapView);
    mapView.setCurrentLocationEventListener(currentLocationEventListener);
    mapView.setCalloutBalloonAdapter(calloutBalloonAdapter);
    mapView.setMapViewEventListener(this);
    mapView.setCurrentLocationTrackingMode(MapView.CurrentLocationTrackingMode.TrackingModeOnWithoutHeading);

    MapPOIItem marker = new MapPOIItem();
    mapView.removePOIItem(marker);


    ArrayList<SurvrectVO> list = ((ActivityWorkList) ActivityWorkList.context).arrayItem;

    if (((ActivityWorkList) ActivityWorkList.context).arrayItem != null) {
        for (int i = 0; i < ((ActivityWorkList) ActivityWorkList.context).arrayItem.size(); i++) {

            //맵 포인트 위도경도 설정
            MapPoint mapPoint = MapPoint.mapPointWithGeoCoord(Double.parseDouble(list.get(i).getLatitude()), Double.parseDouble(list.get(i).getLongitude()));
            marker.setItemName("Default Marker");
            marker.setTag(0);
            marker.setMapPoint(mapPoint);
            marker.setMarkerType(MapPOIItem.MarkerType.RedPin); // 기본으로 제공하는 BluePin 마커 모양.
            marker.setSelectedMarkerType(MapPOIItem.MarkerType.RedPin); // 마커를 클릭했을때, 기본으로 제공하는 RedPin 마커 모양.
            //맵 포인트 위도경도 설정

            mapView.addPOIItem(marker);
        }

    }

    if (!checkLocationServicesStatus()) {
        showDialogForLocationServiceSetting();
        Log.e("@@@", "1111");
    } else {
        checkRunTimePermission();
        Log.e("@@@", "2222");
    }

    //움직임 감지 시 트래킹모드 on 자동 현재위치찾기x 변경
    mapView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            float curX = motionEvent.getX();
            float curY = motionEvent.getY();
            switch (motionEvent.getAction()) {
                case MotionEvent.ACTION_UP: {
                    //TrackingModeOnWithoutHeadingWithoutMapMoving 트래킹모드는 on 움직임 off
                    mapView.setCurrentLocationTrackingMode(MapView.CurrentLocationTrackingMode.TrackingModeOnWithoutHeadingWithoutMapMoving);
                    return false;
                }
                default:
                    return false;
            }
        }
    });
}

CalloutBalloonAdapter calloutBalloonAdapter = new CalloutBalloonAdapter() {
    @Override
    public View getCalloutBalloon(MapPOIItem mapPOIItem) {
        ((TextView) mCalloutBalloon.findViewById(R.id.ball_item_location)).setText(mapPOIItem.getItemName());
        ((TextView) mCalloutBalloon.findViewById(R.id.ball_item_name)).setText("Custom CalloutBalloon");
        return mCalloutBalloon;
    }

    @Override
    public View getPressedCalloutBalloon(MapPOIItem mapPOIItem) {
        return null;
    }
};

private void initWidgets() {
    btnbranchMapBack = findViewById(R.id.btn_branch_map_back);
    btnLocation = findViewById(R.id.btn_location);

    btnLocation.setOnClickListener(this);
    btnbranchMapBack.setOnClickListener(this);
}

@SuppressLint("NonConstantResourceId")
@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.btn_branch_map_back:
            onBackPressed();
            break;
        case R.id.btn_location: // 현재위치 버튼
            if (mapPointGeo != null) {
                mapView.setMapCenterPoint(MapPoint.mapPointWithGeoCoord(mapPointGeo.latitude, mapPointGeo.longitude), true);
            }

            break;
    }
}


@Override
public void onDestroy() {
    super.onDestroy();
    mapViewContainer.removeAllViews();

    Log.e("@@@", "33333");
}


//현재 위치 좌표값 받아오기
MapView.CurrentLocationEventListener currentLocationEventListener = new MapView.CurrentLocationEventListener() {
    @Override
    public void onCurrentLocationUpdate(MapView mapView, MapPoint currentLocation, float v) {
        mapPointGeo = currentLocation.getMapPointGeoCoord();
        Log.e(LOG_TAG, String.format("MapView onCurrentLocationUpdate (%f,%f) accuracy (%f)", mapPointGeo.latitude, mapPointGeo.longitude, v));
        Log.e("@@@", "444444");
    }

    @Override
    public void onCurrentLocationDeviceHeadingUpdate(MapView mapView, float v) {

    }

    @Override
    public void onCurrentLocationUpdateFailed(MapView mapView) {
        Log.e("@@@", "55551155");
    }

    @Override
    public void onCurrentLocationUpdateCancelled(MapView mapView) {
        Log.e("@@@", "555555");
    }
};

@Override
public void onRequestPermissionsResult(int permsRequestCode,
                                       @NonNull String[] permissions,
                                       @NonNull int[] grandResults) {
    Log.d("@@@", "555555");
    if (permsRequestCode == PERMISSIONS_REQUEST_CODE && grandResults.length == REQUIRED_PERMISSIONS.length) {

        // 요청 코드가 PERMISSIONS_REQUEST_CODE 이고, 요청한 퍼미션 개수만큼 수신되었다면
        boolean check_result = true;

        // 모든 퍼미션을 허용했는지 체크합니다.
        for (int result : grandResults) {
            if (result != PackageManager.PERMISSION_GRANTED) {
                check_result = false;
                break;
            }
        }

        if (check_result) {
            Log.d("@@@", "start");
            //위치 값을 가져올 수 있음

        } else {
            // 거부한 퍼미션이 있다면 앱을 사용할 수 없는 이유를 설명해주고 앱을 종료합니다.2 가지 경우가 있다
            if (ActivityCompat.shouldShowRequestPermissionRationale(this, REQUIRED_PERMISSIONS[0])) {
                Toast.makeText(this, "퍼미션이 거부되었습니다. 앱을 다시 실행하여 퍼미션을 허용해주세요.", Toast.LENGTH_LONG).show();
                finish();
            } else {
                Toast.makeText(this, "퍼미션이 거부되었습니다. 설정(앱 정보)에서 퍼미션을 허용해야 합니다. ", Toast.LENGTH_LONG).show();
            }
        }
    }
}

void checkRunTimePermission() {
    Log.e("@@@", "66666");
    //런타임 퍼미션 처리
    // 1. 위치 퍼미션을 가지고 있는지 체크합니다.
    int hasFineLocationPermission = ContextCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION);


    if (hasFineLocationPermission == PackageManager.PERMISSION_GRANTED) {
        // 2. 이미 퍼미션을 가지고 있다면
        // ( 안드로이드 6.0 이하 버전은 런타임 퍼미션이 필요없기 때문에 이미 허용된 걸로 인식합니다.)
        // 3.  위치 값을 가져올 수 있음
        Log.e("@@@", "7");

    } else {  //2. 퍼미션 요청을 허용한 적이 없다면 퍼미션 요청이 필요합니다. 2가지 경우(3-1, 4-1)가 있습니다.
        // 3-1. 사용자가 퍼미션 거부를 한 적이 있는 경우에는
        if (ActivityCompat.shouldShowRequestPermissionRationale(SurveyListMap.this, REQUIRED_PERMISSIONS[0])) {
            // 3-2. 요청을 진행하기 전에 사용자가에게 퍼미션이 필요한 이유를 설명해줄 필요가 있습니다.
            Toast.makeText(SurveyListMap.this, "이 앱을 실행하려면 위치 접근 권한이 필요합니다.", Toast.LENGTH_LONG).show();
            // 3-3. 사용자게에 퍼미션 요청을 합니다. 요청 결과는 onRequestPermissionResult에서 수신됩니다.
            ActivityCompat.requestPermissions(SurveyListMap.this, REQUIRED_PERMISSIONS,
                    PERMISSIONS_REQUEST_CODE);
            Log.e("@@@", "8");
        } else {
            // 4-1. 사용자가 퍼미션 거부를 한 적이 없는 경우에는 퍼미션 요청을 바로 합니다.
            // 요청 결과는 onRequestPermissionResult에서 수신됩니다.
            ActivityCompat.requestPermissions(SurveyListMap.this, REQUIRED_PERMISSIONS,
                    PERMISSIONS_REQUEST_CODE);
            Log.e("@@@", "9");
        }
    }
}

//여기부터는 GPS 활성화를 위한 메소드들
private void showDialogForLocationServiceSetting() {
    Log.e("@@@", "777777");
    android.support.v7.app.AlertDialog.Builder builder = new AlertDialog.Builder(SurveyListMap.this);
    builder.setTitle("위치 서비스 비활성화");
    builder.setMessage("앱을 사용하기 위해서는 위치 서비스가 필요합니다.\n"
            + "위치 설정을 수정하시겠습니까?");
    builder.setCancelable(true);
    builder.setPositiveButton("설정", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int id) {
            Intent callGPSSettingIntent
                    = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivityForResult(callGPSSettingIntent, GPS_ENABLE_REQUEST_CODE);
        }
    });
    builder.setNegativeButton("취소", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
        }
    });
    builder.create().show();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.e("@@@", "88888");
    switch (requestCode) {
        case GPS_ENABLE_REQUEST_CODE:
            //사용자가 GPS 활성 시켰는지 검사
            if (checkLocationServicesStatus()) {
                if (checkLocationServicesStatus()) {
                    Log.d("@@@", "onActivityResult : GPS 활성화 되있음");
                    checkRunTimePermission();
                    return;
                }
            }
            break;
    }
}

public boolean checkLocationServicesStatus() {
    Log.e("@@@", "999999");

    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

    return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
            || locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
}

@Override
public void onMapViewInitialized(MapView mapView) {

}

@Override
public void onMapViewCenterPointMoved(MapView mapView, MapPoint mapPoint) {

}

@Override
public void onMapViewZoomLevelChanged(MapView mapView, int i) {

}

@Override
public void onMapViewSingleTapped(MapView mapView, MapPoint mapPoint) {

}

@Override
public void onMapViewDoubleTapped(MapView mapView, MapPoint mapPoint) {

}

@Override
public void onMapViewLongPressed(MapView mapView, MapPoint mapPoint) {

}

@Override
public void onMapViewDragStarted(MapView mapView, MapPoint mapPoint) {

}

@Override
public void onMapViewDragEnded(MapView mapView, MapPoint mapPoint) {

}

@Override
public void onMapViewMoveFinished(MapView mapView, MapPoint mapPoint) {

}

}