Android开发如何获得第三方应用Widget的包名和类名
3个回答
展开全部
最近在做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<AppWidgetProviderInfoproviders=mAppWidgetManager.getInstalledProviders();finalintproviderCount=providers.size();for(inti=0;i<providerCount;i++){
ComponentNameprovider=providers.get(i).provider;Log.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
展开全部
最近在做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<AppWidgetProviderInfoproviders=mAppWidgetManager.getInstalledProviders();finalintproviderCount=providers.size();for(inti=0;i<providerCount;i++){
ComponentNameprovider=providers.get(i).provider;Log.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
桌面预置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<AppWidgetProviderInfoproviders=mAppWidgetManager.getInstalledProviders();finalintproviderCount=providers.size();for(inti=0;i<providerCount;i++){
ComponentNameprovider=providers.get(i).provider;Log.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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
AppWidgetManager mAppWidgetManager;
mAppWidgetManager = AppWidgetManager.getInstance(this);
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());
}
将以上代码放到一个程序中,即可在logcat中看到。
常见的使用场合是:做Android的开发中,想在桌面上预置一些第三方应用的Widget
方法就是要获得应用的包名和类名。
桌面预置widget的方法 在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代码:
1.<appwidget
2. launcher:packageName="com.google.android.apps.genie.geniewidget" //预置应用的包名
3. launcher:className="com.google.android.apps.genie.geniewidget.miniwidget.MiniWidgetProvider" //预置应用的Provider的类名,不是Activity的类名
4. launcher:screen="1" //在第几屏 0为第一屏,
5. launcher:x="0" //x 坐标
6. launcher:y="0" //y 坐标
7. launcher:spanX="4" // x 方向占几个单元格
8. launcher:spanY="1" /> // y 方向占几个单元格
通过logcat有时可以找到应用的包名和Provider类名,此方法不可取,容易出错。系统的widget可以通过查找相关的源码找到对应的包名和Provider的类名,但是第三方应用看不到源码,但是也可以通过反编译第三方应用,获得相应的Maifest.xml文件,找到对应的包名和Provider类名,但是此方法比较繁琐。
可以通过在Launcher中添加如下代码,可以将系统中所安装的所有 的widget的信息打印出来:
在Launcher.java中的onCreate方法中添加下面的代码:
1.List<AppWidgetProviderInfo> providers = mAppWidgetManager.getInstalledProviders();
2.final int providerCount = providers.size();
3.
4.for (int i = 0; i < providerCount; i++) {
5. ComponentName provider = providers.get(i).provider;
6. Log.i("xxx",">>>>> package name : "+ provider.getPackageName()+">>>>>> class name : "+ provider.getClassName()) ;
7. }
新编译Launcher,把Launcher push进去之后,执行 adb logcat -s xxx,就可以看到打印出来的Log信息,包名和Provider了类名。
桌面预置shortcut的方法:
在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代码:
1.
2.<favorites
3.
• 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>
含义和上面的一样。
mAppWidgetManager = AppWidgetManager.getInstance(this);
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());
}
将以上代码放到一个程序中,即可在logcat中看到。
常见的使用场合是:做Android的开发中,想在桌面上预置一些第三方应用的Widget
方法就是要获得应用的包名和类名。
桌面预置widget的方法 在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代码:
1.<appwidget
2. launcher:packageName="com.google.android.apps.genie.geniewidget" //预置应用的包名
3. launcher:className="com.google.android.apps.genie.geniewidget.miniwidget.MiniWidgetProvider" //预置应用的Provider的类名,不是Activity的类名
4. launcher:screen="1" //在第几屏 0为第一屏,
5. launcher:x="0" //x 坐标
6. launcher:y="0" //y 坐标
7. launcher:spanX="4" // x 方向占几个单元格
8. launcher:spanY="1" /> // y 方向占几个单元格
通过logcat有时可以找到应用的包名和Provider类名,此方法不可取,容易出错。系统的widget可以通过查找相关的源码找到对应的包名和Provider的类名,但是第三方应用看不到源码,但是也可以通过反编译第三方应用,获得相应的Maifest.xml文件,找到对应的包名和Provider类名,但是此方法比较繁琐。
可以通过在Launcher中添加如下代码,可以将系统中所安装的所有 的widget的信息打印出来:
在Launcher.java中的onCreate方法中添加下面的代码:
1.List<AppWidgetProviderInfo> providers = mAppWidgetManager.getInstalledProviders();
2.final int providerCount = providers.size();
3.
4.for (int i = 0; i < providerCount; i++) {
5. ComponentName provider = providers.get(i).provider;
6. Log.i("xxx",">>>>> package name : "+ provider.getPackageName()+">>>>>> class name : "+ provider.getClassName()) ;
7. }
新编译Launcher,把Launcher push进去之后,执行 adb logcat -s xxx,就可以看到打印出来的Log信息,包名和Provider了类名。
桌面预置shortcut的方法:
在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代码:
1.
2.<favorites
3.
• 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>
含义和上面的一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询