(구)개발
하이브리드앱에서 내 위치(좌표) 가져오기 #webview #javascriptinterface #gps
살아남자제발
2019. 7. 12. 09:30
at ANDROID STUDIO
public class MainActivity extends AppCompatActivity {
private GpsInfo gps; //gps
private String lat; //위도
private String lng; //경도
public static WebView webView = null; //웹뷰
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//JSP에서 안드로이드 함수를 호출할 때
//"안드야"하고 부를 이름(?) 선언
webView.addJavascriptInterface(new AndroidBridge(), "android");
//웹페이지 로드
webView.loadUrl("https://~~~~.com");
}
/*
웹에서 좌표 호출 시 이용될 함수
@JavascriptInterface <- 이 어노테이션이 쓰여야한다
*/
@JavascriptInterface
public String myLocate(String str) throws JSONException {
gps = new GpsInfo(getBaseContext());
lat = String.valueOf(gps.getLatitude());
lng = String.valueOf(gps.getLongitude());
Toast.makeText(MainActivity.this, "위도="+lat+"경도"+lng, Toast.LENGTH_LONG).show();
if(str != null) return lat;
else return lng;
}
}
at WEB, JSP
//웹에서 호출하는 좌표구하기 함수
function myLocate(){
var lat, lng, v; //변수
var isAndroid=(/android/i).test(navigator.userAgent); //현재기기가 안드인지 체크
if(isAndroid){//안드가 맞다면
//여기가 위쪽에서 작성된 안드로이드 코드를 사용하는 부분
//window."안드야".함수;
//하며 호출함
lat = window.android.myLocate('lat');
lng = window.android.myLocate(null);
v = [lat, lng];
}else{//안드가 아니라면
v = [37.26389, 127.02861];
}
console.log(v); //콘솔에 찍자
};
<button id="btn" onClick="myLocate();" />
대충 정리해보았다.