• Android怎么让一个service开机自动启动


    1.首先开机启动后系统会发出一个Standard Broadcast Action,名字叫android.intent.action.BOOT_COMPLETED,这个Action只会发出一次。

    2.构造一个IntentReceiver类,重构其抽象方法onReceiveIntent(Context context, Intent intent),在其中启动你想要启动的Service。

    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" /> ,以使其能捕捉到这个Action。

    一个例子
    xml:

    Java代码 
    1. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>   
    2. <receiver android:name=".OlympicsReceiver" android:label="@string/app_name">    
    3.     <intent-filter>    
    4.        <action android:name="android.intent.action.BOOT_COMPLETED" />    
    5.        <category android:name="android.intent.category.LAUNCHER" />    
    6.     </intent-filter>    
    7. </receiver>  
    [java] view plaincopy
     
    1. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>  
    2. <receiver android:name=".OlympicsReceiver" android:label="@string/app_name">   
    3.     <intent-filter>   
    4.        <action android:name="android.intent.action.BOOT_COMPLETED" />   
    5.        <category android:name="android.intent.category.LAUNCHER" />   
    6.     </intent-filter>   
    7. </receiver>  

     java:

    Java代码 
    1. public class OlympicsReceiver extends IntentReceiver    
    2. {   
    3.     /*要接收的intent源*/  
    4.     static final String ACTION = "android.intent.action.BOOT_COMPLETED";   
    5.            
    6.     public void onReceiveIntent(Context context, Intent intent)    
    7.     {   
    8.         if (intent.getAction().equals(ACTION))    
    9.         {   
    10.                   context.startService(new Intent(context,    
    11.                        OlympicsService.class), null);//启动倒计时服务   
    12.              Toast.makeText(context, "OlympicsReminder service has started!", Toast.LENGTH_LONG).show();   
    13.         }   
    14.     }   
    15. }  
    [java] view plaincopy
     
    1. public class OlympicsReceiver extends IntentReceiver   
    2. {  
    3.     /*要接收的intent源*/  
    4.     static final String ACTION = "android.intent.action.BOOT_COMPLETED";  
    5.           
    6.     public void onReceiveIntent(Context context, Intent intent)   
    7.     {  
    8.         if (intent.getAction().equals(ACTION))   
    9.         {  
    10.                   context.startService(new Intent(context,   
    11.                        OlympicsService.class), null);//启动倒计时服务  
    12.              Toast.makeText(context, "OlympicsReminder service has started!", Toast.LENGTH_LONG).show();  
    13.         }  
    14.     }  
    15. }  

     注意:现在的IntentReceiver已经变为BroadcastReceiver,OnReceiveIntent为onReceive。所以java这边的代码为:

    (也可以实现应用程序开机自动启动)
    Java代码 
    1. public class OlympicsReceiver extends BroadcastReceiver   
    2. {   
    3.     /*要接收的intent源*/  
    4.     static final String ACTION = "android.intent.action.BOOT_COMPLETED";   
    5.            
    6.     public void onReceive(Context context, Intent intent)    
    7.     {   
    8.         if (intent.getAction().equals(ACTION))    
    9.         {   
    10.                   context.startService(new Intent(context,    
    11.                        OlympicsService.class), null);//启动倒计时服务   
    12.              Toast.makeText(context, "OlympicsReminder service has started!", Toast.LENGTH_LONG).show();   
    13.             //这边可以添加开机自动启动的应用程序代码   
    14.         }   
    15.     }   
    16. }  
  • 相关阅读:
    纪念一下なぞなぞゲーム
    071221 晴
    Sightseeing Cows poj3621
    【HDU 5721】Palace(平面最近点对)
    继承和多态的一些知识点
    3D Convex Hull HDU 3662 三维凸包
    Monthly Expense POJ 3273 二分
    确定比赛名次 HDU 1285拓扑排序裸题
    序列变换
    Dropping tests 二分+01分数规划
  • 原文地址:https://www.cnblogs.com/dongweiq/p/4107834.html
Copyright © 2020-2023  润新知