ActivityManager activityManger=(ActivityManager) thisgetSystemService(ACTIVITY_SERVICE);
List<ActivityManagerRunningAppProcessInfo> list=activityMangergetRunningAppProcesses();
for(int i=0;i<listsize();i++)
{
ActivityManagerRunningAppProcessInfo apinfo ==listget(i);
if(apinfoprocessNameequals(new String("包名")))
{
String[] pkgList=apinfopkgList;
for(int j=0;j<pkgListlength;j++)
{
//22以上是过时的,请用killBackgroundProcesses代替
activityMangerkillBackgroundProcesses(pkgList[j]);
}
}
}
在做APP UI自动化的时候,获取APK的包名、Activity信息是最基础的,问开发虽然是最快最简单的方式,但是这样就显得测试不是很专业了。下面我们就来看看应该怎样进行获取。
显示appApackage信息大致如下
第一个,使用re-signjar
把apk扔到打开的re-signjar中,resign不仅会帮我们把apk重签名了,还会帮我们显示出package name&mainActivity。。一举两得有木有
第二个,命令:aapt dump badging apk名
回车,就得到一大串的信息(包名不要傻傻的自己输,找到本地这个apk,直接扔到命令行就可以了---简单粗暴,又保证不会错误,^_^)
先通过下面的getPackages()方法获得所有系统安装的应用,根据打印出来的日志找到你要找的应用的对应的包名,在调用startAppByPackageName()方法启动应用就可以了,主activity不需要的
private ArrayList<PInfo> getPackages() {
ArrayList<PInfo> apps = getInstalledApps();
final int max = appssize();
for (int i=0; i<max; i++) {
appsget(i)prettyPrint();
}
return apps;
}
class PInfo {
private String appname = "";
private String pname = "";
private String versionName = "";
private int versionCode = 0;
private Drawable icon;
private void prettyPrint() {
Loge("zhm",appname + "\t" + pname + "\t" + versionName + "\t" + versionCode);
}
}
private ArrayList<PInfo> getInstalledApps() {
ArrayList<PInfo> res = new ArrayList<PInfo>();
List<PackageInfo> packs = parentgetPackageManager()getInstalledPackages(0);
for(int i=0;i<packssize();i++) {
PackageInfo p = packsget(i);
if (pversionName == null) {
continue ;
}
PInfo newInfo = new PInfo();
newInfoappname = papplicationInfoloadLabel(parentgetPackageManager())toString();
newInfopname = ppackageName;
newInfoversionName = pversionName;
newInfoversionCode = pversionCode;
newInfoicon = papplicationInfoloadIcon(parentgetPackageManager());
resadd(newInfo);
}
return res;
}
public void startAppByPackageName(String packageName){
PackageInfo pi = null;
try {
pi = getPackageManager()getPackageInfo(packageName, 0);
} catch (NameNotFoundException e) {
eprintStackTrace();
}
Intent resolveIntent = new Intent(IntentACTION_MAIN, null);
resolveIntentaddCategory(IntentCATEGORY_LAUNCHER);
resolveIntentsetPackage(pipackageName);
List<ResolveInfo> apps = getPackageManager()queryIntentActivities(resolveIntent, 0);
ResolveInfo ri = appsiterator()next();
if (ri != null ) {
String packageName1 = riactivityInfopackageName;
String className = riactivityInfoname;
Intent intent = new Intent(IntentACTION_MAIN);
intentaddCategory(IntentCATEGORY_LAUNCHER);
intentaddFlags(IntentFLAG_ACTIVITY_NEW_TASK);
ComponentName cn = new ComponentName(packageName1, className);
intentsetComponent(cn);
startActivity(intent);
}
}
以上就是关于各位大侠,android 关闭指定包名的程序源码,要如何实现了。类似一个程序列表,获取包名然后关闭这个程序全部的内容,包括:各位大侠,android 关闭指定包名的程序源码,要如何实现了。类似一个程序列表,获取包名然后关闭这个程序、查看APK包的appApackage信息和主Activity信息、无源码的apk,获取package name&mainActivity等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)