[Android] URL scheme – 주소창에서 앱실행, 앱간의 값 전달

뭐할때 쓰는 녀석이냐면

ㄱ. A앱에서 B앱을 호출하고 싶을때,

ㄴ. 주소창에서 A앱을 실행시키고 싶을때,

ㄷ. 1,2번을 하면서 parameter로 값을 전달하고 싶을때.

 

방법은 간단하다.

우선 andoridmanifest.xml을 열어서 해당 activity에 intent 필터를 추가 시키고,

아래처럼 내용으로 채워준다.

<activity android:name=".ListViewActivity" android:label="@string/app_name">
<intent-filter>
   <action android:name="android.intent.action.VIEW"/>
   <category android:name="android.intent.category.DEFAULT"/>
   <category android:name="android.intent.category.BROWSABLE" />
   <data android:host="test2" android:scheme="bill" />
</intent-filter>
</activity>

그리고 호출할때는

bill://test2 (스킴://호스트)

형식으로 하면 된다.

해석하면 bill://teset2를 주소창에 입력하면 ListActivity가 실행.

사실 이건 앱을 실행시킨다기보다는

해당 activity를 실행시키는 것이다.

intent filter의 action하고 category를 왜저렇게 했는지 궁금하면

http://developer.android.com/training/basics/intents/filters.html

여기보면 나와있다.

일단 이렇게 만들고 안드로이드 브라우저에서 bill://test2를 입력하면

본인의 목적과는 다르게 브라우저에서 구글링을 해버린다.

그래서 내가 만든게 잘못된나 싶어서 html페이지 하나 띄우고

거기다가 <a href=”bill://test2″> 하니까

그제서야 제대로 작동한다.

값얻어오는법

manifest에서 괜히 intent에 data 태그를 쓰는게 아니다.

if(getIntent()!=null){
    Uri uri = getIntent().getData();
    if(uri != null){ 
        Log.d("MainAtv-receivedata", uri.toString()); 
        Log.d("MainAtv-receivedata", uri.getQueryParameter("confirm")); } }

queryparameter

2013-01-24_1738_001

 

 

 

앱간 데이터 전달

네이티브 앱간에도 데이터 전달하는법.

받는부분이야 위에 적었던 부분하고 동일하고

보낼적에는

manifest에 설정한것 처럼 intent 하나 맹그러서

uri 담아가지고 보내믄 된다.

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse("bill2://test2?r=received"));
startActivity(intent);

2013-01-24_1839_001

이 글은 app 카테고리에 분류되었고 , , 태그가 있습니다. 고유주소 북마크.

댓글 남기기