Android开发如何获得第三方应用Widget的包名和类名(2)

通过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>  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwzswp.html