zoukankan      html  css  js  c++  java
  • 【转】android如何实现开机自动启动Service或app

    1.今天我们主要来探讨android怎么让一个service开机自动启动功能的实现。Android手机在启动的过程中会触发一个Standard Broadcast Action,名字叫android.intent.action.BOOT_COMPLETED(记得只会触发一次呀),在这里我们可以通过构建一个广播接收者来接收这个这个action.下面我就来简单写以下实现的步骤:

    2. 第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动的Service或app。

    1.     import android.content.BroadcastReceiver;  
    2.     import android.content.Context;  
    3.     import android.content.Intent;  
    4.     import android.util.Log;  
    5.       
    6.     public class BootBroadcastReceiver extends BroadcastReceiver {  
    7.         //重写onReceive方法  
    8.         @Override  
    9.         public void onReceive(Context context, Intent intent) {  
    10.             //后边的XXX.class就是要启动的服务  
    11.             Intent service = new Intent(context,XXXclass);  
    12.             context.startService(service);  
    13.             Log.v("TAG""开机自动服务自动启动.....");  
    14.            //启动应用,参数为需要自动启动的应用的包名
    15.     Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);
    16.     context.startActivity(intent );        
    17.         }  
    18.       
    19.     }  
    1. 第二步:配置xml文件,在receiver接收这种添加intent-filter配置  
    2.      <receiver android:name="BootBroadcastReceiver">  
    3.                 <intent-filter>  
    4.                     <action android:name="android.intent.action.BOOT_COMPLETED"></action>  
    5.                     <category android:name="android.intent.category.LAUNCHER" />  
    6.                 </intent-filter>  
    7.             </receiver>  
    8. 第三步:添加权限 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  

    启动APP:

    因为做一个hotkey的项目,其中有几个快捷键需要启动系统自带的browser和email。因为刚刚开始学习android,在网上找到启动browser和email的方法都是利用ACTION_VIEW和SENDTO这样的intent去启动browser和email.问题来了:

    1.如果是这样的话,启动browser需要自己预设一个网址,然后调用浏览器打开改网址。

    2.启动email,也是需要自己设定一个账户地址,才能调用email去发送。

    但是我只是需要打开程序,不想设定死这些data。所以想用应用程序本身的intentfilter中的action,不方便了。想到我想要的功能就只是简单代替了点击图标来启动程序,因此从laucher中入手应该可以。去调用onClick中的方法就行了。

    最后实现如下:

    PackageManager pm = getPackageManager();

    Intent intent = pm.getLaunchIntentForPackage("packagename");

    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//只要是调用系统的app,就要加上这个flag,否则会抛出异常。

    startActivity(intent);

    这样不用指定 action就可以实现调用任何一个自带app了。

    =====================================

    原文链接:http://blog.csdn.net/weixingyan/article/details/7339420

  • 相关阅读:
    Asp.net弹出浏览器客户端确认对话框代码 Carlwave
    VS 2005 与SQL Server 2005整合优势在哪里?(from csdn.net) Carlwave
    如何让搜索引擎收录我的站点 Carlwave
    超强扩展性的DNNDotNetNuke模块功能分类列表(from 中国DNN) Carlwave
    DotNetNuke命名空间概述 Carlwave
    Most Popular Questions and Answers on ASP.NET Whidbey(from asp.net forums,write by ASP.NET Team) Carlwave
    火箭官方宣告麦蒂缺阵五周 季后赛前景蒙上阴影 Carlwave
    asp.net有效使用缓存(转) Carlwave
    《Business Rules Engine Overview》《业务规则引擎概述》write by Mark Kamoski Carlwave
    中国详细省市县自治区名称列表(含access数据库和sql2000备份数据库) Carlwave
  • 原文地址:https://www.cnblogs.com/SummerRain/p/3266223.html
Copyright © 2011-2022 走看看