2012-09-03 3 views
0

휴대 전화 부팅시 실행되는 서비스를 작성하려고하며 SD 카드에서 데이터를 읽어야합니다. 처음에는 android.intent.action.BOOT_COMPLETED에 대한 수신자를 사용하고 있었지만 아래의 의도로 전환하여 SD 카드가로드되었는지 확인했습니다.Nexus 7의 브로드 캐스트 수신기

제 문제는 제 Nexus 7에서 MEDIA_MOUNTED 의도를 수신하지 않는 것입니다. Nexus 7에는 SD 카드가 없습니다 (단, 별도의 SD 카드 파티션이 있음). 나는 또한 같은 행운을 가지고 BOOT_COMPLETED 인 텐트를 시도했다. 에뮬레이터와 Thunderbolt에서 동일한 코드를 테스트했으며 두 가지 의도가 모두 작동합니다.

Manifiest :

<receiver 
    android:name=".StartupReceiver" 
    android:enabled="true" 
    android:exported="true" 
    android:label="Start the NFS Automounter Service"> 

    <intent-filter> 
     <action android:name="android.intent.action.MEDIA_MOUNTED"></action> 
     <data android:scheme="file"/> 
     <!-- <action android:name="android.intent.action.BOOT_COMPLETED"></action>--> 
    </intent-filter> 
</receiver> 

BroadcastReceiver 클래스 : 난 그냥 시도하고 클래스가 전혀 실행하면 로그인 할 의도가 일치에서 주석

public class StartupReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     //if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) 
     //if ("android.intent.action.MEDIA_MOUNTED".equals(intent.getAction())) 
     //{ 

      Log.d("NFS_Automounter", "Recieved Mount"); 
      Intent serviceIntent = new Intent("com.ancantus.nfsautomounter.AutomountService"); 
      context.startService(serviceIntent); 
     //} 
    } 
} 

.

Nexus 7은 실제 SD 카드가 없기 때문에 MEDIA_MOUNTED을 브로드 캐스트하지 않습니다. 그러나 나는 BOOT_COMPLETED 인 텐트를받을 수 없습니다.

그리고 질문을 포기하십시오; 예, BOOT_COMPLETED 권한이 있습니다.

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
+0

활동이 있습니까? 장치를 재부팅하기 전에 한 번 활동을 실행 했습니까? – CommonsWare

+0

@CommonsWare 활동 없음, 수신자 클래스가 서비스를 실행합니다. – Ancantus

답변

5

사람들이 찾을 수있는 충분한 검색 결과가 나오기 전에이 답안을 몇 번 입력해야합니까? 아마 굵은 캡이 작동합니다 뭔가가 수동으로 응용 프로그램의 다른 구성 요소 중 하나를 실행 할 때까지

안드로이드 3.1을 시작으로, NO BroadcastReceiver는 이러한 활동를 실행하는 사용자로, AT ALL, 작동합니다.

blog posts에, (물론 위치하지 불구하고)이 에 있고, 같은 많은 StackOverflow의 대답에 : 그래서

앱에 활동을 추가하십시오. 배경 작업, 설명서, 사용권 계약, 개인 정보 취급 방침 등에 대한 설정을하려면 어쨌든 몇 가지 작업이 필요합니다.

(참고 : 나는 정말로 당신에게 호통이 아닙니다. 이 말을 꺼내려는 노력에도 불구하고 계속해서 올라오고 있다는 것을 좌절 시켰습니다 ...)

+0

아니 꽤 괜찮은, 난 정말 내 검색에서 아무것도 보지 못했어요 놀랐습니다 (나는'BroadcastReciever 자체가 작동하지 않는 것을 깨닫기보다는 SD 카드 문제에 집중하고있었습니다). 당신의 설명이 완벽합니다. 내일 활동을 작성하고 문제가 해결되는지 확인 하겠지만 Webnet의 대답을 받아 들일 것입니다. 내 질문이 SD 카드에 더 집중되어 있기 때문입니다. – Ancantus

+0

@Ancantus : 활동을 실행하여 응용 프로그램을 "중지됨"상태에서 벗어나게되면 두 수신기가 모두 작동하기 시작합니다. – CommonsWare

1

바탕 화면으로 액세스하는 경우에도 방법으로 SD 카드를 에뮬레이트 많은 안드로이드 기기는 SD 카드에 대한 액세스에 영향을하지 않습니다. 따라서 Nexus 7은 모든 메모리를 그런 식으로 노출하기 때문에 실제로 아무 것도 탑재하지 않으면 방송하지 않습니다. MEDIA_MOUNTED. 부팅 할 때 몇 가지 작업을 수행하려면 BOOT_COMPLETED을 청취하는 것이 유일한 올바른 접근 방법입니다.

+0

그래, Nexus7이 SD 카드를 브로드 캐스트하지 않는 것이 맞았습니다. 따라서'BOOT_COMPLETED' 인 텐트가 수신되면 SD 카드 파티션을 사용할 수 있어야합니다. 그 의도를받지 못할 이유가 있습니까? – Ancantus

+0

여기에 Nexus가 없다는 것을 확실히 말할 수는 없지만 마운트 할 SD 카드가 없다면 나에게 'MEDIA_MOUNT'을 방송하지 않는 충분한 이유가 있다고 들립니다. –

+0

장치가 BOOT_COMPLETED를 호출하는지 여부를 알 수있는 방법이 있습니까? –

관련 문제