2012. 8. 11. 10:41
안드로이드 - 다른 앱에서 어플 실행 안드로이드 이야기2012. 8. 11. 10:41
728x90
반응형
안드로이드 - 다른 앱에서 어플 실행
인텐트의 일부 기능입니다.
1. 어플을 처음부터 실행시키고 싶을때
부르는 쪽
private OnClickListener mGetListener = new OnClickListener()
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setData(Uri.parse("[scheme_name]://"));
startActivity(intent);
}
};
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setData(Uri.parse("[scheme_name]://"));
startActivity(intent);
}
};
받는쪽 manifest.xml 내용
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER" />
<data android:scheme="[scheme_name]" />
</intent-filter>
</activity>
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER" />
<data android:scheme="[scheme_name]" />
</intent-filter>
</activity>
요렇게 구성하면 해당 앱을 다른 앱에서 호출 할 수 있습니다.
-------------------------------------------------------------------------------2010.12.02 수정 시작
죄송합니다. 테스트할 때는 위의 구성에 문제가 없었는데 signed된 apk로 만들어 설치를 해보니 계속 설치하 안되는 겁니다. 설정에서 설치된 프로그램 보니까 분명 존재하는데.. 메뉴에서 프로그램 아이콘이 생기지 않는 겁니다.. 뭔가 문제가 있음을 알고 좀 더 찾아보니
위의 분 말씀대로 런처에서는 하면 안되는 것이었습니다!!! 에효.. 그럼 테스트일때는 어떻게 된거죠;;;
여튼 간에 스킴을 받아들이는 다른 액티비티를 통해서 런처 Activity를 실행시키는 수 밖에 없는 것 같았습니다.( 혹, 더 좋은 방법 있으면 꼭 공유 부탁드려요~^^) 그래서 아래와 같이 수정했습니다.
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".UriActivity" android:theme="@android:style/Theme.NoTitleBar" android:configChanges="keyboardHidden|orientation">
<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:scheme="[scheme_name]" android:host="[path]"/>
</intent-filter>
</activity>
<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:scheme="[scheme_name]" android:host="[path]"/>
</intent-filter>
</activity>
----------------------------------------------------------------------------------2010.12.02 수정 끝
2. 안드로이드 브라우저 폰에서 어플내에 특정 Activity를 실행시키고 싶을때 (단, 그 특정 앱의 Acivity의 scheme name을 알고 있어야 합니다.)
브라우저 웹페이지
<a href="[sheme_name]://">특정 어플 부르기</a>
해당 앱의 manifest.xml 내용 중
<activity android:name=".[activity_name]"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="keyboardHidden|orientation">
<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:scheme="[scheme_name]" android:host="[path]"/>
</intent-filter>
< /activity>
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="keyboardHidden|orientation">
<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:scheme="[scheme_name]" android:host="[path]"/>
</intent-filter>
< /activity>
이렇게 하면 브라우저 페이지에서 특정 앱 내의 Activity 호출이 가능합니다. ( 제 경우에는 특별히 host 나 data 및 type 을 설정하지 않았습니다.) 더 많은 정보는 아래 주소의 레퍼런스를 참고하세요~
728x90
반응형
'안드로이드 이야기' 카테고리의 다른 글
안드로이드 - SMS와 문자열 비교 (0) | 2012.08.11 |
---|---|
안드로이드 - 전화 수신 거부 (1) | 2012.08.11 |
안드로이드 - Camera 찍고 -> 현재 날짜.jpg 저장하고 -> 읽어서 보여주기 (0) | 2012.08.10 |
안드로이드 - 카메라에 이미지 떠다니기 (0) | 2012.08.10 |
안드로이드 - 사진, 갤러리 Image Crop 후 MMS 전송 하기 (0) | 2012.08.10 |