如何获取一个安装包(apk)的所有活动(activity)

如何获取一个安装包(apk)的所有活动(activity),第1张

开发插件啊。简单的,利用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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10075802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存