728x90
오늘은 특정 좌표(서울특별시청)가 네이버 지도 앱 또는 모바일 웹에서 띄워지는 예시를 만들어 보겠습니다.
manifest 정보 추가
manifest에 android.intent.action.VIEW 액션과 nmap 스키마를 설정한 intent <queries> 를 추가해주세요.
레이아웃 xml 파일 코드(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/move_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="지도 보여주기"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
액티비티 자바 코드
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
double latitude = 37.5664056; // 서울특별시청 위도
double longitude = 126.9778222; // 서울특별시청 경도
Button move_button=findViewById(R.id.move_button);
move_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 버튼을 누를시
// 네이버지도 앱이 있다면 지도앱으로 이동
// 지도앱이 없다면 브라우저의 네이버지도로 이동
move_naver_map(latitude,longitude);
}
});
}
private void move_naver_map(double latitude, double longitude) { //지도 위치보기
try {
String text = URLEncoder.encode("서울특별시청 입니다","UTF-8");//지도 볼때 같이 보여줄 문자열, 문자열을 uri에 넣을수 있도록 인코딩
String appName = getApplicationContext().getPackageName(); // 앱 패키지명
// 네이버 지도 uri 스키마 생성
String uriString = String.format("nmap://place?lat=%f&lng=%f&name=%s&appname=%s",
latitude, longitude, text, appName); // intent로 외부앱 요청을 하기위한 uri 주소
// 인텐트 생성 및 설정
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uriString));
intent.addCategory(Intent.CATEGORY_BROWSABLE);
// 네이버 지도 앱이 설치되어 있는지 확인
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (list == null || list.isEmpty()) {
// 네이버 지도 앱이 설치되어 있지 않은 경우, 웹 브라우저로 네이버 지도 웹사이트 열기
intent.setData(Uri.parse("https://map.naver.com/?lat=" + latitude + "&lng=" + longitude));
}
//intent 정보에 따른 지도 보여주기 실행
startActivity(intent);
} catch (UnsupportedEncodingException e) {
Toast.makeText(MainActivity.this,"지원되지않는 인코딩 형식입니다",Toast.LENGTH_SHORT).show();
}
}
}
실행 영상
네이버 지도 앱이 기기에 있는 경우
네이버 지도 앱이 기기에 없는 경우
특정 좌표가 네이버 지도 앱 또는 모바일 웹에서 띄워지는 것을 확인할 수 있습니다.
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android]앱의 Key Hash 값 가져오기 (0) | 2024.07.06 |
---|---|
[JAVA][Android] 알람 앱 구현하기 - (1) 리사이클러뷰로 목록 만들기 (0) | 2024.07.05 |
[JAVA][Android] Media3 사용해서 동영상 재생하기 (0) | 2024.07.02 |
[JAVA][Android]전화번호 입력된 전화 앱 열기, 전화 걸기 (0) | 2024.06.29 |
[JAVA][Android] MediaPlayer로 음악 재생하기 (0) | 2024.06.26 |