android 开发如何获得第三方应用Widget的包名和类名
16lz
2021-01-25
最近在做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>
含义和上面的一样。
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- Android心得4.1--文件的保存与读取及文件的操作模式详解.doc
- Android的资源引用(1)(字符串、颜色、尺寸、数组)
- 安装android studio报错Failed to install Intel HAXM的解决方法
- Android(安卓)如何使用短信链接打开APP
- Android(安卓)通知栏Notification的整合 全面学习
- git下载Android源代码(含kernel)
- Android登录界面的实现代码分享
- Android自定义进度条——圆角横向进度条