안 드 로 이 드 에서 어떻게 서비스 가 켜 지면 자동 으로 시작 합 니까?

2685 단어 xmlandroid
1. 먼저 시동 을 걸 면 시스템 에서 표준 Broadcast Action 을 보 냅 니 다. 이름 은 android. intent. action. BOOT 입 니 다.COMPLETED, 이 Action 은 한 번 만 보 낼 수 있 습 니 다.2. IntentReceiver 클래스 를 구성 하고 추상 적 인 방법 인 onReceiveIntent (Context context, Intent intent) 를 재 구성 하여 시작 하고 자 하 는 서 비 스 를 시작 합 니 다.3. AndroidManifest. xml 에 먼저 < uses - permission android: name = "android. permission. RECEIVE BOOT COMPLETED" > < / uses - permission > 을 추가 하여 BOOT 획득COMPLETED 의 사용 허 가 를 받 은 다음 에 앞에서 재 구성 한 IntentReceiver 클래스 를 등록 하고 < intent - filter > 에 < action android: name = "android. intent. action. BOOT COMPLETED" / > 를 추가 합 니 다. ,이 액 션 을 포착 할 수 있 도록하나의 예 xml:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<receiver android:name=".OlympicsReceiver" android:label="@string/app_name"> 
    <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</receiver>

 java:
public class OlympicsReceiver extends IntentReceiver 
{
    /*    intent */
    static final String ACTION = "android.intent.action.BOOT_COMPLETED";
        
    public void onReceiveIntent(Context context, Intent intent) 
    {
        if (intent.getAction().equals(ACTION)) 
        {
                  context.startService(new Intent(context, 
                       OlympicsService.class), null);//       
             Toast.makeText(context, "OlympicsReminder service has started!", Toast.LENGTH_LONG).show();
        }
    }
}
 
메모: 현재 IntentReceiver 는 BroadcastReceiver 로, OnReceiveIntent 는 onReceive 로 바 뀌 었 습 니 다.그래서 자바 이쪽 코드 는:
(응용 프로그램 이 켜 지면 자동 으로 시작 할 수도 있다)
public class OlympicsReceiver extends BroadcastReceiver
{
    /*    intent */
    static final String ACTION = "android.intent.action.BOOT_COMPLETED";
        
    public void onReceive(Context context, Intent intent) 
    {
        if (intent.getAction().equals(ACTION)) 
        {
                  context.startService(new Intent(context, 
                       OlympicsService.class), null);//       
             Toast.makeText(context, "OlympicsReminder service has started!", Toast.LENGTH_LONG).show();
            //                   
        }
    }
}

좋은 웹페이지 즐겨찾기