2012-08-03 3 views
1

여전히 MODE_PRIVATE 동안 두 가지 다른 응용 프로그램간에 공유 환경 설정을 this great technique 구현하려고합니다.동일한 APK에서 두 개의 패키지가 가능합니까?

Context c = createPackageContext("com.app.first", MODE_PRIVATE); 

로 대체해야합니다 :

내 문제는 첫 번째 응용 프로그램이 첫 번째 응용 프로그램이 설치 (또는 그 반대) 등 있다고 가정 할 수 없다는 것입니다

Context c = createPackageContext("com.app.shared", MODE_PRIVATE); 

하지만 의무는 추가 그 com.app.shared은 실제로, 두 번째 APK로 변환됩니까?

즉, 하나의 APK 당 AndroidManifest.xml 및 매니페스트 파일 당 하나의 <manifest package= > 있다. APK 당 실제 패키지는 하나 뿐이니까?

응용 프로그램 당 2 개의 APK가 필요 없으며 응용 프로그램 당 하나의 APK 만 필요합니다.

이 방법이 있습니까?

답변

2

여전히 MODE_PRIVATE 동안 두 개의 다른 응용 프로그램에서 환경 설정을 공유하는 훌륭한 기술을 구현하려고합니다.

사실, 그건 내가 방금 내 대답을 삭제 한 대단한 기술입니다. android:sharedUserId을 사용하면 이미 배포 된 앱의 경우 위험하고 완전히 불가능합니다. 나는 내 대답을 게시 한 이래로 2 년 만에 내 방식의 오류를 배웠다.

또한이 기술은 사용자가 설치 및 제거하는 응용 프로그램을 제어 할 수 없으므로 안정적으로 작동하지 않습니다. App A와 App B가 App A 복사본을 사용하여 환경 설정을 공유하면 사용자가 App A를 제거하면 App B가 닫힙니다.

따라서 실제 패키지는 APK 당 하나입니까?

수정.

응용 프로그램 당 2 개의 APK를 원하지 않아 응용 프로그램 당 하나의 APK 만 필요합니다.

두 가지 응용 프로그램의 경우 각각 자체 패키지 이름을 가진 두 개의 APK 파일이 있습니다.

+0

나를 비참한 접근으로부터 구해 주셔서 감사합니다. 이제는 "공유 된"환경 설정의 "보급 된"가용성에도 불구하고 다소 많은 안전 장치가 있어야하는 많은 해결 방법과 트릭이 필요하다는 것을 알게되었습니다. 이제 애플리케이션간에 무엇이든 공유하는 올바른 접근 방식은 [Content Providers] (http://developer.android.com/guide/topics/providers/content-providers.html)를 통해 이루어지는 것이라고 저는 생각합니다. 나는 올바른 방향으로 나아가고 있는가? – ef2011

+2

@ ef2011 : 앱간에 정보를 공유하는 데는 여러 가지 방법이 있습니다. 'ContentProvider'가 하나의 가능성입니다. 이 경우 개인적으로 앱의 환경 설정이 변경되면 권한 보안이 설정된 브로드 캐스트를 보내고 다른 앱에서 선택하여 자체 복사본에 적용합니다. 그런 식으로 설정을 미러링하는 두 앱 모두에서 하나의 앱이 제거되고 두 앱의 설정이 모두 삭제되는 것에 대해 걱정할 필요가 없습니다. 또한 어떤 앱이 먼저 설치되는지 신경 쓰지 않아도됩니다. 부작용으로 필요에 따라 세 개 이상의 앱으로 원활하게 확장됩니다. – CommonsWare

+0

불행하게도 ContentProvider는 [INSTALL_FAILED_CONFLICTING_PROVIDER] (http://stackoverflow.com/q/6273592/722603) 제한으로 인해 두 가지 패키지가 동일한 콘텐츠 공급자를 공유 할 수 없기 때문에 가능성이 없습니다. 그래서, ** 갈 유일한 길은 당신이 제안한 "허가 된 보안 방송"입니다. 이 링크에 대해 더 자세히 알 수있는 링크가 있습니까? – ef2011