我已经写过通过APK获得包名的文章,但是最近在对android1.5的适配中发现,1.5的快捷方式只通过包名是无法启动的,所以试着找到启动类的名字,找了很久没找到通过APK获得启动类名字的方法,所以用了别的方法。
在下载后把包名信息写入SharedPreferences中,在安装监听程序中处理:
/** * @author Wudongdong * @version v1.0 */ public class InstallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_PACKAGE_ADDED) || action.equals(Intent.ACTION_PACKAGE_INSTALL)) { SharedPreferences packageinfo = context.getSharedPreferences(Constants.PREFS_PACKAGEINFO,0); String packageName = packageinfo.getString("packageName", null); String appName=""; Intent intent2=new Intent(Intent.ACTION_MAIN,null); intent2.addCategory(Intent.CATEGORY_LAUNCHER); PackageManager pm = context.getPackageManager(); PackageInfo info = pm.getPackageArchiveInfo(apkpath, PackageManager.GET_ACTIVITIES); List<ResolveInfo> appList = pm.queryIntentActivities(intent2,0); for (ResolveInfo resolveInfo : appList) { Log.d("xxxx", resolveInfo.activityInfo.packageName); if(resolveInfo.activityInfo.packageName.equals(info.packageName)){ appName=resolveInfo.activityInfo.name; break; } } } } }