(一、)启动apk的常用方法
方法一:最直接的就是知道apk的包名和启动类名, 直接启动
1 | Intent mIntent = new Intent( ); |
2 | ComponentName comp = new ComponentName( "包名" , "类名" ); |
3 | mIntent.setComponent(comp); |
4 | mIntent.setAction( "android.intent.action.VIEW" ); |
6 | startActivity(mIntent); |
方法二:如果只知道包名,在这种情况下通常也可以启动,通常调用public abstract Intent getLaunchIntentForPackage (String packageName)
大概意思就是返回一个程序入口的Intent,就是Java程序的Main方法。直接startActivity(返回的intent)即可。
Intent mIntent = getPackageManager()getLaunchIntentForPackage(packageName);
if(mIntent != null) startActivity(mIntent);
方法三:就是如何只提供apk,如何启动呢?在这种情况下,通常只能在sdk源代码下来编译完成
通常引入android.content.pm.PackageParser;
见code:
07 | public ApplicationInfo getApplicationInfo(Uri packageURI) { |
09 | final String archiveFilePath = packageURI.getPath(); |
11 | PackageParser packageParser = new PackageParser(archiveFilePath); |
13 | File sourceFile = new File(archiveFilePath); |
15 | DisplayMetrics metrics = new DisplayMetrics(); |
17 | metrics.setToDefaults(); |
19 | PackageParser.Package pkg = packageParser.parsePackage(sourceFile, archiveFilePath, metrics, 0 ); |
27 | return pkg.applicationInfo; |
这样就可以得到该apk的包名,接下来方式就和方法二一样则可
(二)、开机自启动服务或应用
- 今天我们主要来探讨android怎么让一个service开机自动启动功能的实现。Android手机在启动的过程中会触发一个Standard Broadcast Action,名字叫android.intent.action.BOOT_COMPLETED(记得只会触发一次呀),在这里我们可以通过构建一个广播接收者来接收这个这个action.下面我就来简单写以下实现的步骤:
- 第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动的Service或app。
-
-
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.util.Log;
-
- public class BootBroadcastReceiver extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
-
- Intent service = new Intent(context,XXXclass);
- context.startService(service);
- Log.v("TAG", "开机自动服务自动启动.....");
-
-
-
- }
-
- }
-
-
- 第二步:配置xml文件,在receiver接收这种添加intent-filter配置
- <receiver android:name="BootBroadcastReceiver">
- <intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED"></action>
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </receiver>
- 第三步:添加权限 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />