在launcher中,长按屏幕,图挂了,我们在代码里面找一下:
首先,找到onLongClick(View v)方法,然后在这个方法中,有如下代码:
然后,继续追踪showAddDialog()方法:
继续找showDialog,没什么发现,showDialog()方法是该类父类Activity()方法,携带参数DIALOG_CREATE_SHORTCUT,但是它最后是调用的Launcher.java的onCreateDialog(int id)这个方法:
在这里,使用了CreateShortcut.createDialog()方法,在源代码的2708行:
我们可以在CreateShortcut类中onclick()方法里面找到一下代码(这里是2.2的代码):
这里是2.3的代码:
在这里又是如何实现的呢?我么看到了startActivityForResult()方法,它实际上是运行了package/apps/Settings/src/com/android/settings/AppWidgetPickActivity.java
我们来看下代码中是如何获取widget信息的:
和方法:
下面是我自己写的获取widget的图标:
在这段代码里,能获取widget的列表。
不知道是何种原因,使用以下代码:
却不能获取widget的图标,而是别的图,望清楚原因者告知。