2011-11-02 5 views
10

매니페스트를 작동하지 :부팅 수신기

  <application android:icon="@drawable/icon" android:label="@string/app_name"> 
      <activity android:name=".AlarmActivity" 
         android:label="@string/app_name"> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
       </intent-filter> 
      </activity> 
      <receiver android:name="CallReciver"> 
       <intent-filter> 
        <action android:name="android.intent.action.PHONE_STATE"> 

</action> 
       </intent-filter> 
      </receiver> 
      <receiver android:name=".SmsReceiver"> 
       <intent-filter android:priority="1000"> 
        <action android:name= 
         "android.provider.Telephony.SMS_RECEIVED" /> 
       </intent-filter> 
      </receiver> 
      <receiver android:name=".OnBootReceiver"> 
      <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 
      <service 
       android:enabled="true" 
       android:name=".AlarmService"> 
      </service> 
     </application> 
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.READ_PHONE_STATE"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.WRITE_SMS"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.READ_SMS"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.SEND_SMS"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.RECEIVE_SMS"> 
     </uses-permission> 
     <uses-permission android:name="android.permission.INTERNET"> 
     </uses-permission> 

수신기 :

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
import android.widget.Toast; 

public class OnBootReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Log.d("Test","booot"); 
     Toast.makeText(context, "Test", Toast.LENGTH_LONG).show(); 
    } 
} 

수신기가 작동하지 않습니다. 내 장치를 끄고 아무 것도 일어나지 않습니다. 이 프로젝트의 SMS 및 호출 수신기가 작동합니다. SMS 수신기 및 CallReceiver - 작동합니다. 첫 번째 소식이 업데이트되었습니다. 전체 매니페스트가 추가되었습니다.

답변

47

HTC 장치가있는 경우 "android.intent.action.QUICKBOOT_POWERON"에도 등록해야합니다. 그래서 매니페스트의 항목은 다음과 같아야 내 HTC에

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

을, 나는 장치를 끄고 내가 QUICKBOOT_POWERON없이 BOOT_COMPLETED있어 잠시 동안 전원을 켭니다합니다.

기기를 끄고 잠시 배터리를 제거하면 시작한 후 BOOT_COMPLETED가 표시됩니다.

+0

와우, 이것은 유용한 게시물입니다! – slinden77

6

넣고 권한

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

나는 그것을 명시하고있다. – user1021984

+2

매니페스트 – Rasel

+0

의 신청 태그에 리시버를 넣었습니까? – user1021984

1

이 시도 ::

<receiver android:enabled="true" android:exported="true" 
     android:name=".OnBootReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

건배를 ...!

+0

삼성 A3는 "enable"및 "exported"플래그를 true로 설정해야했지만 Huawei 6P 및 기타 2 개의 장치에서는 기본적으로 true로 설정되었습니다. 솔루션에 대한 고마워요 Rohit :) –

3

Android 3.1 이상에서는 앱이 '중지됨'상태로 설치되며 앱이 적어도 한 번 이상 사용자가 '무언가를 할 때까지'부팅 및 종료 이벤트를받지 않습니다. this post on the topic.