2014-01-25 3 views
1

많은 활동이있는 응용 프로그램이 있습니다.활동 스택에없는 활동으로 브로드 캐스트 보내기

응용 프로그램의 상태가 내가 웹 서비스

한 번에 또는 다른에서를 통해 인터넷에서 수신 데이터가 저장되고, 내 웹 서비스는 이미 로그인 한 후 난에 로그인을 수행 할 필요가 있음을 말해 것 과거이고 로그인 활동이 활동 스택에 없습니다.

시스템에 브로드 캐스트를 보내고 로그인 활동을 열기 위해 정보를받을 때 (http 관련 클래스에서) 정보를 받길 원합니다.

이 브로드 캐스트가 도착하면 어떤 활동에있을 수 있으므로이 브로드 캐스트 수신기를 등록해야합니까?

+1

매니페스트에있는 경우 – cYrixmorten

+0

브로드 캐스트 리시버는 앱의 구성 요소에 종속되지 않으면 매니페스트에서 앱을 실행하지 않으면 작업을 수신 대기합니다. –

+0

** "내 웹 서비스에서 로그인을 수행해야한다고 알립니다. "** - 어떻게이 사실을 알 수 있습니까? 또한, 반드시해야 할 일은'startActivity (...)'를 사용하여 로그인 활동을 시작하는 것입니다. – Squonk

답변

0

당신이 를 모르는 경우 사전 Activity는 신호가 가장 좋은 방법은이처럼 Manifest 파일에 정의되어 전송 될 때 실행됩니다 :

<receiver android:name="YourReceiver" > 
    <intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 
0

당신은 당신을 등록 할 수 있습니다 이

<receiver android:name=".YourBroadcastReceiver" android:exported="false"> 
    <intent-filter> 
    <action android:name="YOUR_PACKAGE_NAME.INETENT_NAME" /> 
    </intent-filter> 
</receiver> 

등의 AndroidManifest.xml에서 브로드 캐스트 리시버 방송은 내부 의도을 처리하는 경우, 당신은 exported false 그 밖의 다른 응용 프로그램으로 선언해야합니다 수 방해받지 않고 방송을 보내면 언제든지 로그인을 열 수 있습니다.

편집 : 여기

이름은 패키지 이름으로 BroacastReceiver의 정확한 경로입니다. 패키지가 매니페스트 태그 내부에 정의 된 패키지에서 가져온 것이기 때문에 주 패키지에있는 점 (.)은 충분하지만 yourcommonapppackage.broadcastreceiver.YourBroadcastReceiver와 같은 다른 패키지에있는 경우 적절하게 이름을 지정해야합니다.

패키지로 가득 차 있었는지 아니면 주 패키지를 참조했는지 여부를 알려줄 수 있습니다.

+0

나는 방송을 받아 보지 못하는 것 같았습니다 –

+0

어쩌면 제가 누락 된 것이 있습니까? 나는이 코드를 매니페스트에 넣고 같은 이름의 클래스를 선언하고 그 안에 로직을 작성한 다음 Intent intent = new Intent ("THE_NAME_OF_THE_ACTION"); context.sendBroadcast (intent); –

+0

@LenaBru는 귀하의 루트 어플리케이션 패키지 내에 BroadcastReceiver이며 매우 첫 줄에 mainifest로 정의되어 있습니다. 내 매니페스트에'.yourreceiver.YourBroadcastReceiver' – pyus13

관련 문제