如何获取apk包的包名和activity

如何获取apk包的包名和activity,第1张

方法一 用重签名工具,这个在Robotium 中用得比较多

另外一种方式用命令方获取

Aapt dumpbadging xxxxapk

第一个框为包名

第二个框为主Activity名

如果取包名与Activity在命令行中不方例还可以用以下方式获取

Aapt dumpbadging xxxxapk >c:\apktxt

之后打开c:\apktxt

第三种方式,如果你装了Appium 可以这么 *** 作下

进入设置页,选择APK 路径,下面就会显示包名和Activity名称

第四种用hierarchyviewer 查看

Aapt 命令

AAPT dump xmltree XXXAPK AndroidManifestxm >ctxt

之后去CTXT 查看

第6种

Adbshell dumpsys activity activities >d:\logtxt

之后去logtxt 搜package 和Activity

第七种

Adb logcag >d:\3txt

之后打开手机上的应用

打开之后立即在电脑上按ctrl+c

之后去3txt 找PACKAGE和Activity

1启动按键精灵手机助手,在模拟器打开app

2在按键精灵新建脚步,输入命令可以获取包名

Dim 返回值

返回值 = SysGetFront()

traceprint sysgetfront()

3调试之后,在输出栏,可以看到包名:

最近在做Android的平板的开发,想在桌面上预置一些第三方应用的Widget,在桌面预置Widget的方法就是要获得应用的包名和类名。桌面预置widget的方法 在Launcher的配置文件 res/xml/default_workspacexml中添加如下的代码:<appwidgetlauncher:packageName="comgoogleandroidappsgeniegeniewidget"//预置应用的包名launcher:className="comgoogleandroidappsgeniegeniewidgetminiwidgetMiniWidgetProvider"//预置应用的Provider的类名,不是Activity的类名launcher:screen="1"//在第几屏0为第一屏,launcher:x="0"//x坐标launcher:y="0"//y坐标launcher:spanX="4"//x方向占几个单元格launcher:spanY="1"///y方向占几个单元格通过logcat有时可以找到应用的包名和Provider类名,此方法不可取,容易出错。系统的widget可以通过查找相关的源码找到对应的包名和Provider的类名,但是第三方应用看不到源码,但是也可以通过反编译第三方应用,获得相应的Maifestxml文件,找到对应的包名和Provider类名,但是此方法比较繁琐。可以通过在Launcher中添加如下代码,可以将系统中所安装的所有 的widget的信息打印出来:在Launcherjava中的onCreate方法中添加下面的代码:List<AppWidgetProviderInfoproviders=mAppWidgetManagergetInstalledProviders();finalintproviderCount=providerssize();for(inti=0;i<providerCount;i++){ComponentNameprovider=providersget(i)provider;Logi("xxx","packagename:"+providergetPackageName()+"classname:"+providergetClassName());}新编译Launcher,把Launcher push进去之后,执行 adb logcat -s xxx,就可以看到打印出来的Log信息,包名和Provider了类名。桌面预置shortcut的方法:在Launcher的配置文件 res/xml/default_workspacexml中添加如下的代码:<favorites

哥们给你解答,加分加威望哈String path = contextgetPackageManager()getApplicationInfo( contextgetPackageName(), 0)sourceDir; DexFile dexfile = new DexFile(path); Enumeration entries = dexfileentries(); while (entrieshasMoreElements()) { String name = (String) entriesnextElement(); } 查看原帖>>

PackageManager manager = thisgetPackageManager();

PackageInfo info = managergetPackageInfo(thisgetPackageName(), 0);

infopackageName就是包名

用命令方获取:

Aapt dumpbadging xxxxapk

第一个框为包名

第二个框为主Activity名

如果取包名与Activity在命令行中不方例还可以用以下方式获取

Aapt dumpbadging xxxxapk >c:\apktxt

之后打开c:\apktxt!

1首先,把你指定的包,转换成本地路径

2列出本地路径下的所有类,并把class去掉,再拼接上 包名

3根据上面获取的类的全限定名,依次利用ClassforName(StringName)newInstance()来创建实例

4把创建好的实例添加到集合中。

Code:

/

根据包名来获取此包下所有的类名及其实例

@param packName

@return

/

public static Set<Object> getObjectsInPackage(String packName){

Set<Object> objs = new HashSet<Object>();

String packageName = packName;

String packageDirName = packageNamereplace("", "/");

Enumeration<URL> dirs = null;

try {

dirs = ThreadcurrentThread()getContextClassLoader()getResources(packageDirName);

//迭代此 Enumeration

while(dirshasMoreElements()){

URL url = dirsnextElement();

File file = new File(urlgetFile());

//把此目录下的所有文件列出

String[] classes = filelist();

//循环此数组,并把class去掉

for(String className : classes){

className = classNamesubstring(0,classNamelength()-6);

//拼接上包名,变成全限定名

String qName = packageName+""+className;

//如有需要,把每个类生实一个实例

Object obj = ClassforName(qName)newInstance();

//添加到集合中

objsadd(obj);

}

}

} catch (Exception e) {

eprintStackTrace();

}

return objs;

}

以上就是关于如何获取apk包的包名和activity全部的内容,包括:如何获取apk包的包名和activity、使用按键精灵手机助手,获取包名、Android开发如何获得第三方应用Widget的包名和类名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存