widget开发

时间:2024-10-22 05:09:15编辑:阿星

如何查看Android应用apk的包名和入口Activity名称

Android开发过程中我们有时需要使用第三方apk资源,而启动第三方apk在某些情况下需要指定相应的包名和启动的Activity名,这个时候就需要获取这两个名称,我们可以使用如下三种方法:

1、使用aapt //aapt是sdk自带的一个工具,在你安装的Eclipse路径下的sdk\build-tools\中,如我的是D:\Eclipse\androidTools\sdk\build-tools\android-4.4.2,如果你下载有apk反编译工具,也可以直接使用里面的aapt



以“GO备份.apk”为例,先进入cmd命令行窗口,然后运行:D: -> Eclipse\androidTools\sdk\build-tools\android-4.4.2
-> aapt dump badging C:\Users\Administrator\Desktop\GO备份.apk,即可获取到AndroidManifest.xml中我们需要的内容,如

package: name='com.jiubang.go.backup.ex'


launchable-activity: name='com.jiubang.go.backup.pro.StartupPageActivity'




2、查看AndroidManifest.xml



同样是查看AndroidManifest.xml,这里我们可以采用反编译方法来获取信息,同样是打开cmd命令行窗口,然后运行:E:
-> apk反编译工具\apktool\apktool -> apktool.bat d -f C:\Users\Administrator\Desktop\GO备份.apk GO备份,然后打开“GO备份”文件夹,打开droidManifest.xml文件,找到manifest节点的package属性值package="com.jiubang.go.backup.ex"语句即为包名,查找android.intent.action.MAIN和android.intent.category.LAUNCHER对应的activity,该activity对应的android:name属性即为入口activity名称,如<activity
android:name="com.jiubang.go.backup.pro.StartupPageActivity"。



3、使用uiautomatorviewer



可以直接在命令行输入uiautomatorviewer,打开获取屏幕截图工具,连接手机,打开所要获取包名的应用,然后获取其截图,根据截图查看package即可,uiautomatorviewer的使用这里就不做介绍了。使用这个需要注意的是,该app必须是有界面的,否则无法获取。



另外,

android.intent.action.MAIN 属性决定应用程序最先启动的Activity

android.intent.category.LAUNCHER属性决定应用程序是否显示在程序列表里


如何通过包名和类名获得一个应用的label

最近在做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


如何在QOpenGLWidget中渲染一个三角形

在Qt5中,新增了QOpenGL*类,用以取代之前的QGL*类。注意,虽然我们仍然能通过Qt5中的OpenGL模块使用QGL*类,但强烈建议大家在新的Qt应用程序中使用QOpenGL*类而不是QGL*类。2另外,在Qt5中,已经将OpenGL集成到了Gui模块中。因此,我们要想使用与OpenGL相关的类和函数,只需要在.pro工程文件中包含gui模块就可以了,无需像以前一样还要包含opengl。END二、怎样在Qt5中使用OpenGL下面,我们来通过一个实际例子来演示怎样在Qt5中使用OpenGL。在这个例子中,为了便于大家理解,我们只创建一个简单的背景为黑色的OpenGL窗口。下面是程序的运行效果图。首先,我们需要创建一个自定义的窗口类Window。该类的父类有两个:1)QOpenGLWindow:以公有方式继承2)QOpenGLFunctions:以保护方式继承另外,在通常情况下,我们还需要实现三个从父类继承的虚函数:1)voidinitializeGL()2)voidresizeGL(intwidth,intheight)//若无需对高、宽进行处理,此函数可省3)voidpaintGL()然后,我们来实现上面所声明的函数。1)initializeGL该函数用来初始化当前的OpenGL环境。注意,在此函数中,我们必须调用initializeOpenGLFunctions();语句以便Qt在后台完成OpenGL环境的初始化工作。随后,使用glClearColor函数来设置清除颜色。该函数的前三个参数分别是红、绿、蓝的分量值,第四个参数为透明度值。2)resizeGL该函数主要用来对高度和宽度进行一些变化处理。当然,如果你没有什么特殊需求,也可以不处理这个函数。3)paintGL该函数才是重头戏,绘制一般在此函数内进行。在这里,作为示范,我们只是简单地用之前设置的清除颜色来清除窗口背景。最后,我们添加一个main.cpp文件,在主函数中新建一个Window类对象,然后将其显示出来。啊哈,纵观整个过程,相比之前的Qt版本,在Qt5中使用OpenGL是不是超级简单呢?


上一篇:天造地设是一双

下一篇:没有了