如何获得第三方应用Widget的包名和类名,并将其放置到桌面

来源:互联网 发布:websock java 编辑:程序博客网 时间:2024/05/16 09:58
1.找到Launcher下的/Launcher/res/xml/default_workspace.xml文件,加入如下代码:
//以下是添加金山清理大师widget到第三屏
<appwidget  
launcher:packageName="com.cleanmaster.mguard"    //金山清理大师widget包名
launcher:className="com.cleanmaster.appwidget.MainAppWidgetWhiteProvider"  //类名
launcher:screen="2"  //第几屏
launcher:x="0"  //屏幕上的x坐标
launcher:y="2"  //y坐标
launcher:spanX="4"  //widget的宽度
launcher:spanY="1"   //widget的高度
/>


2.怎么获取金山清理大师widget的包名和类名呢?
方法有很多,以下将列出3种方法:
<1>.使用反编译软件apktool将apk反解,找到AndroidManifest.xml文件,在该文件中可以找到相应的包名和类名。
<manifest android:versionCode="30800342" android:versionName="3.8.0" android:installLocation="auto" package="com.cleanmaster.mguard"
  xmlns:android="http://schemas.android.com/apk/res/android">
......
<receiver android:label="@string/widget_system_theme_white" android:name="com.cleanmaster.appwidget.MainAppWidgetWhiteProvider">
......
</receiver>
...
<2>.在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());
    Toast.makeText(getApplicationContext(), ">>>>> package name:"+ provider.getPackageName()+">>>>>> class name : "+ provider.getClassName(), 1).show();
  }
  安装apk,将其widget放置到桌面,编译Launcher,将其push到/system/app下,重启手机后,就可以看到包名和类名的Toast的提示,查看log,也可以看到。
<3>.手机连接到logcat,操作该widgit时,查看log信息。(该方法仅供参考)
原创粉丝点击