开发插件啊。简单的,利用intent将B中的界面拉起来进行处理,这是一种伪插件模式正经的一种框架为:利用PackageManagergetInstalledPackages来获取并筛选出属于A的插件,也就是B,并可以获知里面的package name和activity name。使用限定包名和类名的方式(Intent intent = new Intent(); ComponentName compList = new ComponentName("comandroid", "comandroid"); intentsetComponent(compList);)startActivity()就可以了,不过这样的插件模式还是挺没有意义的。最好的插件应该首先将A和B两个apk定义一样的sharedUserId,然后只是利用contextgetClassLoader()loadClass()之后利用反射直接调用插件里面定义的方法而不是拉起界面。
在android工程文件下的manifestxml文件中修改
<manifest xmlns:android=">
需要使用隐式意图Intent来启动。
具体实现代码:
Intent intent = new Intent("注册的Action");
startActivity(intent); 即可启动一个Activity,和调用系统相机拍照,调用文件管理选择文件同一个写法
通过 PackageManager 获取本机安装的应用,PackageManager可以得到包名,程序名和icon等应用信息,然后通过包名来启动,代码如下:
PackageInfo pi;
try {
pi = getPackageManager()getPackageInfo(packageName, 0);
Intent resolveIntent = new Intent(IntentACTION_MAIN, null);
resolveIntentsetPackage(pipackageName);
PackageManager pManager = getPackageManager();
List apps = pManagerqueryIntentActivities(
resolveIntent, 0);
ResolveInfo ri = appsiterator()next();
if (ri != null) {
packageName = riactivityInfopackageName;
String className = riactivityInfoname;
Intent intent = new Intent(IntentACTION_MAIN);
ComponentName cn = new ComponentName(packageName, className);
intentsetComponent(cn);
startActivity(intent);
}
} catch (NameNotFoundException e) {
eprintStackTrace();
}
private boolean isAvilible( Context context, String packageName )
{
final PackageManager packageManager = contextgetPackageManager();
// 获取所有已安装程序的包信息
List<PackageInfo> pinfo = packageManagergetInstalledPackages(0);
for ( int i = 0; i < pinfosize(); i++ )
{
if(pinfoget(i)packageNameequalsIgnoreCase(packageName))
return true;
}
return false;
}
然后检测是否安装:
if(isAvilible(MainActivitythis, "comtencentmm")){
Intent i = new Intent();
ComponentName cn = new ComponentName("comtencentmm",
"comtencentmmWeiXinActivity");
isetComponent(cn);
startActivityForResult(i, RESULT_OK);
}
//未安装,跳转至market下载该程序
else {
Uri uri = Uriparse("market://detailsid=comtencentmm");
// 直接从指定网址下载
// Uri uri = Uriparse(">
以上就是关于如何获取一个安装包(apk)的所有活动(activity)全部的内容,包括:如何获取一个安装包(apk)的所有活动(activity)、请教如何更改安卓程序包apk的package name重谢!!、怎么启动一个不知道包名和类名的Android APK等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)