2011-04-21 4 views
20

/sdcard에있는 경우 자동으로 부팅 한 후 안드로이드 응용 프로그램을 시작하는 방법이 있습니까?안드로이드 - 부팅 후/sdcard에서 응용 프로그램을 시작하는 방법

좋아, 아마도 BroadcastReceiver. 그러나 어떤 행동이 옳은가?

ACTION_BOOT_COMPLETED - does not work if it is on the /sdcard (documented) 
ACTION_MEDIA_MOUNTED - does not work if it is on the /sdcard (which is undocumented) 
ACTION_EXTERNAL_APPLICATIONS_AVAILABLE - does not work, I do not know why 
ACTION_USER_PRESENT - does not work if the BroadcastReceiver is registered in AndroidManifest (which is undocumented, but documentation bug has been reported) 

감사

+0

혹시이 문제를 해결 했습니까? 나는 지금 비슷한 문제가있다. –

+0

귀하의 질문에 감사드립니다. : D –

+0

도움이된다면 답을 받아 들여야합니다. –

답변

0

나는 보통 (응용 프로그램을 확장하는 클래스에서 안드로이드 매니페스트뿐만 아니라 동적으로) 두 가지 방송 수신기에 대한 모든 텐트 필터를 등록의 AndroidManifest.xml에서

로 :

<receiver 
      android:name=".broadcastReciever" 
      android:enabled="true" 
      android:exported="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <action android:name="android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE" /> 
      </intent-filter> 
     </receiver> 

및 확장하는 클래스에서 응용 프로그램 :

registerReceiver(new broadcastReciever(), new IntentFilter(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE)); 

그리고 RECEIVE_BOOT_COMPLETED 권한을 추가하고 Android Manifest에서 Application을 확장하는 클래스를 등록하는 것을 잊지 마십시오.

이렇게해야합니다. 더 많은 도움/설명을 요청하십시오.

1

매니페스트 파일에 언급하십시오.

</uses-permission>  
<receiver android:name=".BootReceiver" 
    android:enabled="true" 
    android:exported="true" 
    android:label="BootReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED"></action> 
    </intent-filter> 
</receiver> 

은 menifest의 하위 항목으로 "android.permission.RECEIVE_BOOT_COMPLETED"권한을 제공하십시오.

그리고 앱이 sdcard에 설치되어서는 안되는 것이 하나 더 있습니다.

+0

이 질문은 앱이 SD 카드에 설치되었을 때 부팅시 알림을받는 방법을 구체적으로 묻기 때문에 질문에 답하지 않습니다. – BladeCoder

+0

잘 모르겠지만 나에 따르면 불가능합니다. –

+0

나는 동의한다. 그래서 옳은 대답은 불가능하다는 것이다. – BladeCoder

0

<receiver android:name=".BootCompleteReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> </intent-filter> </receiver>

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

아마도 QUICKBOOT_POWERON 도움이 유

1

구글에 따르면, 당신은 당신이 외부 드라이브에 부팅 실행하려는 응용 프로그램을 넣으면 안됩니다를 사용해보십시오.

"외부 저장소가 장치에 마운트되기 전에 시스템에서 ACTION_BOOT_COMPLETED 브로드 캐스트를 전달합니다. 응용 프로그램이 외부 저장소에 설치되어 있으면이 브로드 캐스트를 수신 할 수 없습니다."

http://developer.android.com/guide/topics/data/install-location.html#ShouldNot

관련 문제