启动apk或者服务的常用方法
2013-08-08 09:52
302 查看
(一、)启动apk的常用方法
方法一:最直接的就是知道apk的包名和启动类名,直接启动
方法二:如果只知道包名,在这种情况下通常也可以启动,通常调用public
abstractIntentgetLaunchIntentForPackage
(StringpackageName)
大概意思就是返回一个程序入口的Intent,就是Java程序的Main方法。直接startActivity(返回的intent)即可。
IntentmIntent=getPackageManager()getLaunchIntentForPackage(packageName);
if(mIntent
!=null)startActivity(mIntent);
方法三:就是如何只提供apk,如何启动呢?在这种情况下,通常只能在sdk源代码下来编译完成
通常引入android.content.pm.PackageParser;
见code:
查看源码
打印?
这样就可以得到该apk的包名,接下来方式就和方法二一样则可
(二)、开机自启动服务或应用
今天我们主要来探讨android怎么让一个service开机自动启动功能的实现。Android手机在启动的过程中会触发一个StandardBroadcastAction,名字叫android.intent.action.BOOT_COMPLETED(记得只会触发一次呀),在这里我们可以通过构建一个广播接收者来接收这个这个action.下面我就来简单写以下实现的步骤:
第一步:首先创建一个广播接收者,重构其抽象方法onReceive(Contextcontext,Intentintent),在其中启动你想要启动的Service或app。
importandroid.content.BroadcastReceiver;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.util.Log;
publicclassBootBroadcastReceiverextendsBroadcastReceiver{
//重写onReceive方法
@Override
publicvoidonReceive(Contextcontext,Intentintent){
//后边的XXX.class就是要启动的服务
Intentservice=newIntent(context,XXXclass);
context.startService(service);
Log.v("TAG","开机自动服务自动启动.....");
//启动应用,参数为需要自动启动的应用的包名
Intentintent=getPackageManager().getLaunchIntentForPackage(packageName);
context.startActivity(intent);
}
}
第二步:配置xml文件,在receiver接收这种添加intent-filter配置
<receiverandroid:name="BootBroadcastReceiver">
<intent-filter>
<actionandroid:name="android.intent.action.BOOT_COMPLETED"></action>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</receiver>
第三步:添加权限<uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
方法一:最直接的就是知道apk的包名和启动类名,直接启动
1 | Intent mIntent= new Intent( ); |
2 | ComponentName comp= new ComponentName( "包名" , "类名" ); |
3 | mIntent.setComponent(comp); |
4 | mIntent.setAction( "android.intent.action.VIEW" ); |
5 |
6 | startActivity(mIntent); |
abstractIntentgetLaunchIntentForPackage
(StringpackageName)
大概意思就是返回一个程序入口的Intent,就是Java程序的Main方法。直接startActivity(返回的intent)即可。
IntentmIntent=getPackageManager()getLaunchIntentForPackage(packageName);
if(mIntent
!=null)startActivity(mIntent);
方法三:就是如何只提供apk,如何启动呢?在这种情况下,通常只能在sdk源代码下来编译完成
通常引入android.content.pm.PackageParser;
见code:
01 | /* |
02 |
03 | * |
04 |
05 | */ |
06 |
07 | public ApplicationInfo |
08 |
09 | final String |
10 |
11 | PackageParser new PackageParser(archiveFilePath); |
12 |
13 | File new File(archiveFilePath); |
14 |
15 | DisplayMetrics new DisplayMetrics(); |
16 |
17 | metrics.setToDefaults(); |
18 |
19 | PackageParser.Package 0 ); |
20 |
21 | if (pkg null ) |
22 |
23 | return null ; |
24 |
25 | } |
26 |
27 | return pkg.applicationInfo; |
28 |
29 | } |
(二)、开机自启动服务或应用
今天我们主要来探讨android怎么让一个service开机自动启动功能的实现。Android手机在启动的过程中会触发一个StandardBroadcastAction,名字叫android.intent.action.BOOT_COMPLETED(记得只会触发一次呀),在这里我们可以通过构建一个广播接收者来接收这个这个action.下面我就来简单写以下实现的步骤:
第一步:首先创建一个广播接收者,重构其抽象方法onReceive(Contextcontext,Intentintent),在其中启动你想要启动的Service或app。
importandroid.content.BroadcastReceiver;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.util.Log;
publicclassBootBroadcastReceiverextendsBroadcastReceiver{
//重写onReceive方法
@Override
publicvoidonReceive(Contextcontext,Intentintent){
//后边的XXX.class就是要启动的服务
Intentservice=newIntent(context,XXXclass);
context.startService(service);
Log.v("TAG","开机自动服务自动启动.....");
//启动应用,参数为需要自动启动的应用的包名
Intentintent=getPackageManager().getLaunchIntentForPackage(packageName);
context.startActivity(intent);
}
}
第二步:配置xml文件,在receiver接收这种添加intent-filter配置
<receiverandroid:name="BootBroadcastReceiver">
<intent-filter>
<actionandroid:name="android.intent.action.BOOT_COMPLETED"></action>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</receiver>
第三步:添加权限<uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
相关文章推荐
- 启动apk的常用方法
- Android 启动Service服务和发送Broadcast广播的常用方法
- 启动apk的常用方法(包括只知道包名的启动方法)
- 启动apk的常用方法(包括只知道包名的启动方法)
- MySql重装或者重新配置数据库实例时遇到“本地计算机无法启动Mysql服务”错误的解决方法
- 启动apk的常用方法(包括只知道包名的启动方法)
- 启动apk的常用方法
- 启动apk的常用方法
- postgresql安装以后服务未监听或者启动后又关闭的解决方法
- 数据库访问拒绝或者SQL server无法启动服务的解决方法
- 一个APK里启动外部APK或者外部APK的一个服务
- Android 启动apk的常用方法
- windows服务程序调试方法 - 启动直接进入调试
- 【原创】Windows下Mysql Cluster集群启动脚本与启动服务添加方法
- sql2005 本地计算机上的SQL SERVER服务启动后又停止了解决方法
- ICS服务无法启动,手动启动时提示 错误5拒绝访问解决方法
- Windows installer 服务无法启动 问题解决方法
- 程序的方法启动或停止指定的系统后台服务
- windows下启动mysql服务的命令行启动和手动启动方法
- Deep Learning(深度学习)之(三)Deep Learning的常用模型或者方法