android 开发如何获得第三方应用Widget的包名和类名

本文介绍了在Android平板开发中预置第三方应用Widget的方法,包括在默认工作区配置文件中添加代码,以及如何通过logcat、反编译APK或直接在Launcher代码中打印Widget信息来获取包名和类名。同时也提到了预置Shortcut的配置方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做Android的平板的开发,想在桌面上预置一些第三方应用的Widget,在桌面预置Widget的方法就是要获得应用的包名和类名。

桌面预置widget的方法 在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代码:

<appwidget
        launcher:packageName="com.google.android.apps.genie.geniewidget"                             //预置应用的包名
        launcher:className="com.google.android.apps.genie.geniewidget.miniwidget.MiniWidgetProvider" //预置应用的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的类名,但是第三方应用看不到源码,但是也可以通过反编译第三方应用,获得相应的Maifest.xml文件,找到对应的包名和Provider类名,但是此方法比较繁琐。

可以通过在Launcher中添加如下代码,可以将系统中所安装的所有 的widget的信息打印出来:

在Launcher.java中的onCreate方法中添加下面的代码:

List<AppWidgetProviderInfo> providers = mAppWidgetManager.getInstalledProviders();
final int providerCount = providers.size();

for (int i = 0; i < providerCount; i++) {
                ComponentName provider = providers.get(i).provider;
                Log.i("xxx",">>>>> package name :  "+ provider.getPackageName()+">>>>>> class name : "+ provider.getClassName()) ; 
            }   


重新编译Launcher,把Launcher push进去之后,执行 adb logcat -s xxx,就可以看到打印出来的Log信息,包名和Provider了类名。

桌面预置shortcut的方法:

在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代码:

<favorites
        launcher:packageName="com.android.music"
 48         launcher:className="com.android.music.MediaAppWidgetProvider"
 49         launcher:screen="3"
 50         launcher:x="0"
 51         launcher:y="0"></favorites>

含义和上面的一样。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值