2012-09-05 2 views
1

기본적으로 관련 앱 제품군을 업데이트하고 시작하기위한 맞춤 앱 스토어 인 앱을 구현했습니다. 그것은 또한 작동하는 자체를 업데이트해야하지만, 설치 프로세스 중에 경고없이 앱이 종료됩니다. 이 경우 앱을 자동으로 다시 시작하여 사용자가 업데이트 후 바로 사용할 수 있도록하고 싶습니다.외부 브로드 캐스트 수신기를 통해 앱 다시 시작

그래서 첫 번째 앱의 패키지 이름에 대한 패키지 이벤트를 수신하고 새로운 활동을 시작하는 단일 브로드 캐스트 수신기 만 포함하여 별도의 애플리케이션을 만들었습니다. 난 단지 수신기를 사용하여 응용 프로그램이 지금 실행 여부에 직접적으로 모순 된 정보를 본 비슷한 구현 검색에서

<application android:icon="@drawable/ic_launcher" 
android:label="@string/app_name"> 

<receiver android:name=".AppUpdateReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.PACKAGE_REPLACED"/> 
    <action android:name="android.intent.action.PACKAGE_ADDED"/> 
    <action android:name="android.intent.action.PACKAGE_INSTALL"/> 
    <data android:scheme="package" /> 
    </intent-filter> 
</receiver> 

및 수신기는 경우 호출 여부 : 그 수신기는 호출되지 않습니다 해당 앱이 이미 실행되고 있지 않습니다. 나는 심지어 내 자신과 매우 비슷한 매니페스트와 함께 수신기 만 포함하는 응용 프로그램의 example code을 보았습니다. 그렇다면 다른 패키지가 설치 될 때마다 수신자가 호출되도록하려면이 애플리케이션에서 무엇이 필요합니까?

더 좋은 해결책이 있다면 나는 그것을 듣게되어 기쁩니다.

답변

1

Android 버전에 따라 BroadcastReceiver을 등록하려면 애플리케이션 구성 요소를 시작해야 할 수 있습니다. 이 말은 사용자가 수동으로 시작해야하는 실행 프로그램 Activity 일 필요가 있음을 의미합니다.

Honeycomb에서 (내가 생각하기에) 앱이 수동으로 어떤 방식 으로든 시작되지 않는 한 '활성'인 애플리케이션 구성 요소를 가질 수 없습니다. 이것에 대한 추론은 최종 사용자의 지식없이 안전하지 않은 코드를 실행할 가능성이 있습니다.

나는 이것이 귀하가 겪어 온 것으로 의심됩니다. 그것을 테스트하려면 BroadcastReceiver가있는 간단한 "Hello World"Activity을 앱에 추가하십시오. Activity을 시작한 다음 다른 패키지가 업데이트 된 후 BroadcastReceiver이 호출되는지 확인하십시오.

+0

나는 그것을 시도했다. 그리고 내가 그 응용 프로그램에서 처음으로 활동을 시작했다면 작동하지만, 실제로 달성하려고 노력하는 것을 돕지는 못한다. 서비스와 비슷한 것을 할 수 있었고, 어떻게 든 업데이트 응용 프로그램에서 서비스를 시작할 수 있습니까? –

+0

보이지 않는 액티비티를 사용하여 관련 솔루션을 찾았으므로 http://stackoverflow.com/questions/4467600/how-to-launch-a-android-service-when-the-app-launches –

+0

그렇게하는 방법이지만 사용자 경험을 통해 무언가가 일어나고 있음을 알리는 것이 우수 사례입니다. 보이지 않는 '활동'은 기본적으로 반대하며, 최소한 피드백의 형태를 제공해야합니다. – Squonk

관련 문제