인텐트의 일부 기능입니다. 
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);
     }
 };

받는쪽 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>

요렇게 구성하면 해당 앱을 다른 앱에서 호출 할 수 있습니다.
-------------------------------------------------------------------------------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>
<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> 
위와 같이 Activity를 하나 더 만들어서 UriActivity에서 Intent로 런처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>

이렇게 하면 브라우저 페이지에서 특정 앱 내의 Activity 호출이 가능합니다. ( 제 경우에는 특별히 host 나 data  및 type 을 설정하지 않았습니다.) 더 많은 정보는 아래 주소의 레퍼런스를 참고하세요~


Posted by 빈솔B
,