最近在做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>

含义和上面的一样。



更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android心得4.1--文件的保存与读取及文件的操作模式详解.doc
  3. Android的资源引用(1)(字符串、颜色、尺寸、数组)
  4. 安装android studio报错Failed to install Intel HAXM的解决方法
  5. Android(安卓)如何使用短信链接打开APP
  6. Android(安卓)通知栏Notification的整合 全面学习
  7. git下载Android源代码(含kernel)
  8. Android登录界面的实现代码分享
  9. Android自定义进度条——圆角横向进度条

随机推荐

  1. Android设置反代理
  2. Android属性allowBackup安全风险浅析
  3. 基于Eclipse的Android(安卓)SDK开发环境
  4. android 限制EditText输入数字的范围大小
  5. Android(安卓)studio如何更改gradle版本
  6. Android(安卓)高效加载大图片避免OOM
  7. Python 通过脚本获取Android的apk的部分
  8. android自定义View-垂直滚动的TextView
  9. 高仿源码
  10. android studio Could not find any vers