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

Android开发如何获得第三方应用Widget的包名和类名,第1张

最近在做Android的平板的开发,想在桌面上预置一些第三方应用的Widget,在桌面预置Widget的方法就是要获得应用的包名和类名。桌面预置widget的方法 在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代码:<appwidgetlauncher: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<AppWidgetProviderInfoproviders=mAppWidgetManager.getInstalledProviders()finalintproviderCount=providers.size()for(inti=0i<providerCounti++){ComponentNameprovider=providers.get(i).providerLog.i("xxx","packagename:"+provider.getPackageName()+"classname:"+provider.getClassName())}新编译Launcher,把Launcher push进去之后,执行 adb logcat -s xxx,就可以看到打印出来的Log信息,包名和Provider了类名。桌面预置shortcut的方法:在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代码:<favorites

如果第三方APP是你自己开发,可以通过文件、ContentProvider、发送广播等等都可以实现。

如果第三方APP不是你自己开发的,就要看他有没有暴露出URI,也就是ContentProvider数据共享,就像读取系统联系人一样。如果没有URI......另想办法,好自为之。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11100488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存