2013-01-10 2 views
0

2 app, A_app 및 B_app을 작성했습니다.
A_app에서 B_app를 호출하고 B_app의 CalledActivity를 실행하려고합니다.
그러나 B_app의 MAINActivity는 MainActiity가 CalledActivity가 아닙니다.
A_app에서 , 나는 B_app 호출하는 코드 아래 시도 :안드로이드에서 A_app로 B_app를 호출하는 방법

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.setComponent(new ComponentName("com.example.bapp","com.example.bapp.BActivity")); 
intent.putExtra ("test2abc", "abctest2"); 
startActivity(intent); 

을 그리고 B_app의 BActivity 아래로에서 onCreate 코드가 있습니다

Bundle params = getIntent().getExtras(); 
if (params != null) { 
    String temp = params.getString ("test2abc"); 
    Toast.makeText (BActivity.this, temp, Toast.LENGTH_LONG).show(); 
} 

그러나 일부 오류가 아래와 같이있다 :

01-10 10:47:16.904: E/AndroidRuntime(8355): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cmp=com.example.bapp/.BActivity (has extras) } from ProcessRecord{418a3788 8355:com.dlink.nas/u0a7} (pid=8355, uid=10007) not exported from uid 10115 

B_app은 다른 호출없이 A_app에 의해서만 직접 호출되기를 원합니다.
어떻게 해결할 수 있습니까?

답변

2

당신은 BActivity<activity> 노드에서 "B_app"안드로이드 매니페스트에이를 추가해야

android:exported="true" 

는 그래서 같은 외모 : 또 다른 방법

<activity android:name=".Bactivity" 
    android:label="@string/b_activity" 
    android:exported="true"> 
<!--rest of activity node --> 
</activity> 

을에 "수출"입니다 인 텐트 필터 (매니페스트에도 있음)를 설정하여 다음을 수행 할 수 있습니다.

<intent-filter> 
    <action android:name="myFilter" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 

Android는 기본적으로 모든 활동에 대한 액세스를 허용하지 않으며 기본 활동 만 허용합니다.

수정 된 질문에 대한 답변을 얻으려면 입니다.이 경우 this SO 대답과 같이 앱이 다른 기기의 구성 요소를 내보내지 않고도 호출 할 수 있습니다. 매니페스트에 sharedUserLabelsharedUserId 속성을 추가해야합니다. 그러나 작업이 약간 변경 될 수 있으므로 권장하지 않습니다.

관련 문제