Android 监听系统启动完毕事件

转载 2012年03月21日 09:36:24
 

For some applications, you will need to have your service up and running when the device is started, without user intervention. Such applications mainly include monitors (telephony, bluetooth, messages, other events). At least this feature is currently allowed by the exaggeratedly restrictive Android permissions policy.

Step 1: First you'll need to create a simple service, defined in Monitor.java:

public class Monitor extends Service { 
 
private static final    String              LOG_TAG = "::Monitor"; 
 
@Override 
public void onCreate() { 
    super.onCreate(); 
    Log.e(LOG_TAG, "Service created."); 
} 
 
@Override 
public void onStart(Intent intent, int startId) { 
    super.onStart(intent, startId); 
    Log.e(LOG_TAG, "Service started."); 
} 
@Override 
public void onDestroy() { 
       super.onDestroy(); 
       Log.e(LOG_TAG, "Service destroyed."); 
} 
 
@Override 
public IBinder onBind(Intent intent) { 
    Log.e(LOG_TAG, "Service bind."); 
    return null; 
} 

}

Step 2: Next we need to create a Broadcast receiver class, StartAtBootServiceReceiver.java:

  public class StartAtBootServiceReceiver extends BroadcastReceiver 
    { 
  private static final  String  LOG_TAG=StartAtBootServiceReceiver"; 
  @Override 
  public void onReceive(Context context, Intent intent) 
  { 
        Log.e(LOG_TAG, "onReceive:"); 
     if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { 
        Intent i = new Intent(); 
        i.setAction("test.package.Monitor"); 
        context.startService(i); 
    } 
} 

}

Step 3: Finally, your AndroidManifest.xml file must contain the following:

 <?xml version="1.0" encoding="utf-8"?> 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="test.package.Monitor" 
    android:versionName="1.0" 
    android:versionCode="100" 
    android:installLocation="internalOnly"> 
    <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true" /> 
 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> 
 
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="8"/> 
 
<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <service android:name="test.package.Monitor">** 
        <intent-filter> 
            <action android:name="test.package.Monitor"> 
            </action> 
        </intent-filter> 
    </service> 
    <receiver android:name="test.package.StartAtBootServiceReceiver"> 
        <intent-filter> 
            <action android:name="android.intent.action.BOOT_COMPLETED"> 
            </action> 
            <category android:name="android.intent.category.HOME"> 
            </category> 
        </intent-filter> 
    </receiver> 
</application> 

I need to highlight some of the most important aspects, key factors for possible errors in implementation:
1) The permission android.permission.RECEIVE_BOOT_COMPLETED must be provided (in the manifest xml)
2) The installation must be performed in internal storage, not on SDCARD! To enforce this use android:installLocation="internalOnly" in the manifest

相关文章推荐

Android如何监听系统输入法弹出显示事件

首先,Android原生API并没有提供

android开发中Service启动BroadastService监听系统剪切板服务

近来做项目时,突然想到,能不能做点坏事呢。。。啧啧,感觉蛮有意思!!!然后想着通过android的service服务,不停截取用户的剪切板服务,获取用户剪切内容,实现起来很简单,勿喷!!!     ...

UGUI基于EventTrigger的UI交互事件监听系统&动态加载

UGUI基于EventTrigger的UI交互事件监听系统&动态加载UGUI中做交互,简单的会用到Button组件,但是仅仅支持点击事件触发;但有另外一个EventTriggger组件,可以支持更过交...

symbian异步方法请求之监听系统时间事件

系统时间的事件处理可由类CEnvironmentChangeNotifier来处理,不过要自己封装处理该事件的方法。以下是具体是实现代码:   .h头文件 #ifndef CENVCHANGEN...

Android平台监听系统截屏方案预研及相关知识点

最近有个针对系统截屏的需求,所以预研了Android平台上捕获系统截屏的方案。 最直接的方式就是监听手机的系统截屏组合键(电源键+音量下键),但是这种方式实现难度大,且有的机型使用特殊手势进行截屏,...

android 监听系统时区变化,日期变化,时间变化

1.  监听时区变化: 配置: private static f...

Android监听系统短信数据库变化-提取短信内容

由于监听系统短信广播受到权限的限制,所以很多手机可能使用这种方式没法监听广播,从而没办法获取到系统短信,所以又重新开辟一条路。 Android监听系统短信数据库内容变化使用场景: 1、监听短信数据...

android监听系统状态栏的显示与隐藏(全屏与否)

这个东搞了几天了,累啊!今天终于有个结果,同志们要找办法的只看3就行了,其他的我只用作记录过程 1.想通过,获取当前ACtivity获取,只有ACtivity才能有getWindow() 可...

android监听系统联系人修改

android系统使用 ContentObserver

监听系统开机广播并启动Activity

功能:系统开机弹出对话框,提示用户信息,如果用户点击“do not show again",则下次开机就不用显示了。 分析:(1)监听系统开机广播,继承BroadcastReceiver类,在o...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 监听系统启动完毕事件
举报原因:
原因补充:

(最多只允许输入30个字)