0

동일한 패키지 이름이지만 다른 패키지 ID (gradle 구성으로 설정)가있는 2 개의 Apps가 있습니다.의도 활동을 사용하여 활동을 시작하고 앱 내로 제한

두 앱에서 동일한 앱에서 인 텐트 액션 문자열을 설정하여 활동을 시작합니다.

즉, 두 기기가 동일한 기기에 설치된 경우 활동을 시작하면 사용자에게 작업을 완료 할 활동을 선택하도록 요청하는 Complete action using.. 대화 상자가 표시됩니다.

제 질문은 manifest 파일에서 문자열 자체를 변경하지 않고 코드베이스에서 startActivity()을 사용하기 전에 액션 문자열의 설정과 문자열 자체를 변경하지 않고 어떻게 분리 할 수 ​​있는지에 관한 것입니다. 액션은 현재 앱으로 만 제한됩니까?

업데이트 # 1 : 응용 프로그램 ID 대신 intent.setPackage()에 가까운 것이 있습니까? 나는 당신의 질문을 이해 그리워하지 않는 경우

답변

1

, 당신은 코드 아래를 통해 그것을 보관할 수 :

여부를 :

// start exactly component 
Intent intent = new Intent(); 
intent.setComponent(new ComponentName("yourPackageId", "yourPackageName.MainActivity")); 
startActivity(intent); 

//or you want to start launcher intent 
Intent intent = getActivity().getPackageManager().getLaunchIntentForPackage("yourPackageId"); 

당신이있어 android:exported 기술로 MainActivityandroid:exported = true이 있는지 확인 갈까요 다른 응용 프로그램의 구성 요소에서 활동을 시작할 수 있는지 여부는 "true"이고 가능한 경우 "false"입니다. "거짓"인 경우, 활동은 동일한 응용 프로그램의 구성 요소 또는 동일한 사용자 ID를 가진 응용 프로그램에 의해서만 시작될 수 있습니다. 이 작업에 텐트 필터의 설정 안드로이드 매니페스트에 선언 된 모든 활동에 대한
android:exported = "false" :

0

는 여기의 현재 상태를 해결하기 위해 가능한 최단 방법입니다.
Check here for reference

GCM의 브로드 캐스트 리시버 및 기타 백그라운드 서비스의 경우 일반적으로 우리가하는 일도 간과하고 있습니다.

더 완벽한 통합을 위해 Apps에서이 작업을 수행해야합니다.

관련 문제