查看Android应用包名、Activity的几个方法

合集下载

getpackageinfo()方法

getpackageinfo()方法

getpackageinfo()方法getPackageInfo()方法是Android开发中常用的一个方法,用于获取应用程序的包信息。

通过这个方法,我们可以获取到应用程序的版本号、包名、签名信息等。

本文将详细介绍getPackageInfo()方法的使用和相关注意事项。

我们需要明确getPackageInfo()方法的基本语法和参数。

这个方法属于PackageManager类,其基本语法如下:```public PackageInfo getPackageInfo (String packageName, int flags)```其中,packageName是要获取信息的应用程序的包名,flags是附加选项,用于指定要获取的信息类型。

下面我们将详细介绍这两个参数的使用。

1. packageName:这个参数是一个字符串,用于指定要获取信息的应用程序的包名。

包名是应用程序的唯一标识,每个应用程序都有一个独特的包名。

在调用getPackageInfo()方法时,我们需要传入要获取信息的应用程序的包名。

2. flags:这个参数是一个整数,用于指定要获取的信息类型。

在Android中,有一些常用的信息类型,如下所示:- GET_ACTIVITIES:获取应用程序的所有Activity信息。

- GET_SERVICES:获取应用程序的所有Service信息。

- GET_RECEIVERS:获取应用程序的所有BroadcastReceiver信息。

- GET_PROVIDERS:获取应用程序的所有ContentProvider信息。

- GET_SIGNATURES:获取应用程序的签名信息。

- GET_META_DATA:获取应用程序的meta-data信息。

通过指定不同的flags值,我们可以获取不同类型的信息。

例如,如果我们只想获取应用程序的版本号,可以将flags设置为GET_SIGNATURES,然后通过PackageInfo对象的versionCode 属性获取版本号。

androidmanifest 解析

androidmanifest 解析

androidmanifest 解析AndroidManifest 解析是指对 Android 应用程序的清单文件(即AndroidManifest.xml)进行解析和理解的过程。

AndroidManifest.xml 是每个Android 应用程序都必须具备的一个文件,它包含了应用程序的核心信息和配置。

在 AndroidManifest 解析的过程中,需要注意以下几个关键要点:1. 应用程序的包名:AndroidManifest.xml 文件中的 package 属性定义了应用程序的包名,它在整个 Android 系统中具有唯一性。

包名在应用的安装、权限控制、组件调用等方面有着重要作用。

2. 应用程序的入口:通过解析 AndroidManifest.xml 中的 <activity> 元素,可以确定应用程序的入口点(即主 Activity)。

主 Activity 是用户与应用交互的第一个界面。

在解析时,需要关注它的属性如 label(应用程序的名称)、icon(应用程序的图标)、intent-filter(Activity 的筛选条件)等。

3. 应用程序的权限:在解析 AndroidManifest.xml 中的 <uses-permission> 元素时,可以获取应用程序所需的权限列表。

Android 应用程序需要获得用户授权才能执行一些敏感操作,如访问网络、读写文件、获取设备信息等。

解析权限是确保应用程序安全运行的重要环节。

4. 应用程序的组件:通过解析AndroidManifest.xml 中的<activity>、<service>、<receiver>、<provider> 元素,可以获取应用程序的各种组件信息。

Activity 表示用户界面的一部分,Service 是后台运行的独立组件,Broadcast Receiver 接收广播消息,Content Provider 提供数据共享。

android中的用法

android中的用法

android中的用法在Android开发中,Android SDK提供了一系列API和工具,用于创建和管理应用程序。

以下是一些在Android开发中常用的用法:1. Activity:Activity是Android应用程序中的一个基本单元,它是用户可以交互的界面。

一个应用程序可以包含多个Activity,每个Activity负责展示一个用户界面并响应用户的操作。

2. Intent:Intent是Android应用程序中不同组件之间通信的方式。

它可以用来启动一个Activity或传递数据到另一个组件。

通过使用Intent,您可以创建一个显式或隐式启动另一个Activity的请求。

3. Service:Service是Android应用程序中的后台服务,它可以在应用程序的主界面之外运行。

Service可以在后台执行长时间运行的任务,例如播放音乐、从网络下载数据或与远程服务器通信。

4. BroadcastReceiver:BroadcastReceiver是Android应用程序中用于接收系统广播的组件。

系统广播是Android系统发出的通知,例如电池电量低、收到短信或电话等。

通过使用BroadcastReceiver,您可以编写一个监听器来接收这些通知,并在接收到通知时执行相应的操作。

5. SQLite数据库:SQLite是一个轻量级的关系型数据库,它在Android应用程序中广泛使用。

通过使用SQLite数据库,您可以存储和检索应用程序的数据,并在需要时检索这些数据。

6. AndroidManifest.xml:AndroidManifest.xml是Android应用程序的配置文件。

它包含了应用程序的基本信息和配置信息,例如应用程序的名称、版本、权限和活动、服务、广播接收器等组件的声明。

以上是一些在Android开发中常用的用法,当然还有其他许多API 和工具可供使用。

通过使用这些API和工具,您可以创建出功能强大、用户体验良好的Android应用程序。

寻找控件的方法

寻找控件的方法

寻找控件的方法
在Android开发中,可以通过多种方法找到控件。

以下是一些常见的方法:
1. 在布局文件中查找:Android的布局文件通常是以XML格式编写的。

您可以在布局文件中找到特定的控件,例如TextView、Button、ImageView等。

这些控件在布局文件中使用标签进行定义,并且可以通过它们的标签名或ID来引用它们。

2. 在代码中查找:在Android应用程序的代码中,您可以通过编程方式查找控件。

您可以使用findViewById( )方法来获取控件的引用。

3. 在设计器中查找:如果您使用Android Studio等集成开发环境(IDE),则可以使用设计器来查找和选择控件。

在设计器中,您可以在布局视图中看到所有的控件,并且可以通过单击它们来选择它们。

选择控件后,您可以在属性检查器中查看和修改它们的属性。

4. 在日志中查找:在Android应用程序的日志中,您可以找到有关控件的调试信息。

如果您在代码中打印了控件的信息,或者在运行应用程序时记录了与控件相关的日志,则可以在日志中查找这些信息。

以上是一些常见的查找Android控件的方法,您可以根据您的需要选择适合您的方法来查找和引用控件。

packageinfo的signature

packageinfo的signature

packageinfo的signature [packageinfo的signature]是指用于在Android应用程序中获取其他应用程序的信息的API,可通过查询包名获得应用程序的名称、图标、版本号等信息。

在开发Android应用程序时,开发者经常需要获取其他应用程序的信息,比如在一个应用商店中展示其他应用的列表,或者在应用程序内部展示已安装的应用列表等。

本文将详细介绍[packageinfo的signature]的使用方法和应用场景,包括如何使用API查询其他应用程序的信息、如何使用查询结果展示应用列表,以及使用示例和注意事项等。

1. 简介[packageinfo的signature]是Android SDK中的一个重要类,用于获取其他应用程序的信息。

它提供了一系列方法,可以通过包名来查询应用程序的信息,其中包括应用程序的名称、包名、图标、版本号、签名等。

2. 使用方法在使用[packageinfo的signature]之前,首先需要在Android应用的Manifest文件中添加获取其他应用程序信息的权限。

下面是一个示例代码片段:xml<manifest xmlns:android="package="com.example.packageinfo"><uses-permissionandroid:name="android.permission.GET_PACKAGE_SIZE" /> <uses-permissionandroid:name="android.permission.GET_SIGNATURES" /><application...</application></manifest>以上代码中,`GET_PACKAGE_SIZE`和`GET_SIGNATURES`权限分别用于获取应用程序的大小和签名信息。

使用adb命令查看APP包名和包入口方法

使用adb命令查看APP包名和包入口方法

使⽤adb命令查看APP包名和包⼊⼝⽅法⽅法⼀:
1.查看前台应⽤当前页⾯的包名,使⽤此命令注意:⼿机只启动要查看包名的app。

备注:⼿机在root模式
adb shell dumpsys activity | find "mFocusedActivity"
⽅法⼆:
1.列出⼿机⾥⾯所有APP包名 adb shell pm list packages
2.后⾯跟 -s列出系统apk路径及包名 adb shell pm list packages -s
3.后⾯跟 -3列出⽤户apk路径及包名 adb shell pm list packages -3
⽅法三:
3.使⽤命令:aapt dump badging 加apk的路径拖拉过来即可。

回车键即可,但是显⽰内容太多需要简化
4.在命令基础上增加⼀个过滤:aapt dump badging 加apk的路径加竖线 | findstr package。

回车键
findstr表⽰:去找,筛选
package表⽰:关键字
以上是查询app包名三种⽅法
⼀、查询包名⼊⼝
1.使⽤上⾯的查看包名的第三种⽅法,在第4步骤下继续执⾏以下命令
2.在命令基础上增加⼀个过滤:aapt dump badging 加apk的路径加竖线 | findstr launchable-activit。

回车键
⼆、启动App命令
adb shell am start -n 包名/包名⼊⼝注意包名和⼊⼝中间加斜杠/。

关于面试总结13-app测试面试题

关于面试总结13-app测试面试题

关于⾯试总结13-app测试⾯试题前⾔现在⾯试个测试岗位,都是要求全能的,web、接⼝、app啥都要会测,那么APP测试⼀般需要哪些技能呢?⾯试app测试岗位会被问到哪些问题,怎样让⾯试管觉得你对APP测试很精通的样⼦?本篇总结了app测试⾯试时候经常被问的10个相关问题1.什么是activity?2.Activity⽣命周期?3.Android四⼤组件?4.app测试和web测试有什么区别?5.android和ios测试区别?6.app出现ANR,是什么原因导致的?7.App出现crash原因有哪些?8.app对于不稳定偶然出现anr和crash时候你是怎么处理的?9.app的⽇志如何抓取?10.你平常会看⽇志吗, ⼀般会出现哪些异常(Exception)?1.什么是activity什么是activity,这个前两年出去⾯试APP测试岗位,估计问的最多了,特别是⼀些⼤⼚,先问你是不是做过APP测试,那好,你说说什么是activity?如果没看过android的开发原理,估计这个很难回答,要是第⼀个问题就被难住了,⾯试的信⼼也会失去⼀半了,⼠⽓⼤减。

Activity是Android的四⼤组件之⼀,也是平时我们⽤到最多的⼀个组件,可以⽤来显⽰View。

官⽅的说法是Activity⼀个应⽤程序的组件,它提供⼀个屏幕来与⽤户交互,以便做⼀些诸如打电话、发邮件和看地图之类的事情,原话如下:An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map.Activity是⼀个Android的应⽤组件,它提供屏幕进⾏交互。

activitymanager 用法

activitymanager 用法

activitymanager 用法ActivityManager是Android系统中的一个重要组件,它负责管理和控制应用程序的各种活动(Activity)。

下面提供了一些ActivityManager的常见用法:1.获取正在运行的应用程序列表:可以使用ActivityManager的getRunningAppProcesses()方法来获取当前运行的应用程序列表。

这个方法将返回一个包含RunningAppProcessInfo对象的列表,通过遍历列表可以得到每个运行中应用程序的详细信息,如进程名、PID、UID等。

2.启动应用程序:可以使用ActivityManager的startActivity()方法来启动一个应用程序。

需要传入一个Intent对象,这个Intent对象包含了要启动的Activity的相关信息,如包名、Activity类名等。

3.结束指定应用程序:可以使用ActivityManager的killBackgroundProcesses()方法来结束指定的应用程序。

需要传入应用程序的包名,系统会将该应用程序所在的进程强制结束。

4.获取设备内存信息:可以使用ActivityManager的MemoryInfo对象来获取设备的内存信息,如剩余内存、总内存等。

通过调用ActivityManager的getMemoryInfo()方法,并传入MemoryInfo对象,可以得到设备的内存状态。

5.获取正在运行的服务列表:可以使用ActivityManager的getRunningServices()方法来获取当前正在运行的服务列表。

该方法返回一个包含RunningServiceInfo对象的列表,通过遍历列表可以得到每个运行中服务的详细信息,如服务名、进程名等。

此外,ActivityManager还提供了其他一些方法,用于管理和控制应用程序的生命周期、堆栈管理等。

拓展:除了上述常见用法之外,ActivityManager还可以用于以下一些场景:1.监听应用程序状态变化:可以通过注册ActivityManager的OnAppSwitchCallback监听应用程序的启动、切换、关闭等状态变化。

Android如何完整的获取到用户已安装应用列表

Android如何完整的获取到用户已安装应用列表

Android如何完整的获取到用户已安装应用列表接到产品经理的预研需求,说希望获取用户已安装应用列表。

这个问题应该不难,只要是要把相关的知识点整理和验证一下。

对于获取用户已安装应用列表,我个人是很熟悉的,因为我的华为手机上,手机管家天天会在通知栏弹出”xxx应用尝试获取用户已安装应用列表被禁止”。

所以,很明显,跟权限是有关系的。

于是,我尝试去查找到底是manifest清单中的哪一个use-permission引起。

结果,找了很久,翻了很久,并没有哪个权限对已安装的应用列表负责。

但奇怪的是,我的手机上几乎全部的软件都声明了这个权限。

于是,尝试去求助其他组员,咨询了几个,不少人一脸懵逼的表示这是个什么玩意。

在他们的手机上压根就没有见过这个东西。

在写demo验证的过程中,发现非常简单的一个demo,居然也声明使用了该权限。

一开始怀疑,难道是检测到了相关代码自动申请了权限?发现全部注释后还是会声明。

后来,将清单文件中的唯一的访问Internet权限去掉,这样才正常。

所以,得出了一个结论就是,国内部分厂商比如华为、oppo,他们将”获取用户已安装应用列表”的权限暴露给了用户,让用户可以自由决定允许或者禁止应用访问该信息。

同时,这个权限类似于附加的默认权限,一旦app声明了任何权限,那么”获取用户已安装应用列表”的权限也会被附加进来。

但这个权限也不是太敏感,所以对于用户是无感知的。

这里的无感知指的是不会在应用中去主动让我们弹窗申请权限,手机管家弹出的通知不算。

好吧,说了这么多,看一下过程中的3种方案。

方案1private void getAppList() {PackageManager pm = getPackageManager();// Return a List of all packages that are installed on the device.List<PackageInfo> packages = pm.getInstalledPackages(0);for (PackageInfo packageInfo : packages) {// 判断系统/非系统应用if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) // 非系统应用{System.out.println("MainActivity.getAppList, packageInfo=" + packageInfo.packageName);} else {// 系统应用}}}此方法在华为、oppo手机上,把权限禁止后,就不能正确获取到已安装应用列表了。

如何实时获取当前activity的实例

如何实时获取当前activity的实例

如何实时获取当前activity的实例全文共四篇示例,供您参考第一篇示例:实时获取当前Activity 实例是Android 开发中非常常见的需求,通常我们可能需要在某些情况下获取当前正在运行的Activity 的实例,以便进行一些操作或者调用其方法。

下面我们就来探讨一下如何实时获取当前Activity 的实例。

### 方式一:使用Application 类在Android 开发中,我们可以通过自定义一个Application 类来实现全局获取当前Activity 实例。

我们需要创建一个继承自Application 的类,并在AndroidManifest.xml 文件中注册。

然后在这个自定义的Application 类中,我们可以使用ActivityLifecycleCallbacks 来监听Activity 的生命周期,并在Activity 创建时保存当前的实例。

```javapublic class MyApplication extends Application {private static MyApplication instance;private Activity currentActivity;@Overridepublic void onCreate() {super.onCreate();instance = this;registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {@Overridepublic void onActivityCreated(Activity activity, Bundle savedInstanceState) {currentActivity = activity;}@Overridepublic void onActivityStarted(Activity activity) {}@Overridepublic void onActivityResumed(Activity activity) {currentActivity = activity;}@Overridepublic void onActivityPaused(Activity activity) {}@Overridepublic void onActivityStopped(Activity activity) {}@Overridepublic void onActivitySaveInstanceState(Activity activity, Bundle outState) {}@Overridepublic void onActivityDestroyed(Activity activity) {}});}public static MyApplication getInstance() {return instance;}public Activity getCurrentActivity() {return currentActivity;}}```通过这种方式,我们可以在任何地方通过调用MyApplication.getInstance().getCurrentActivity() 来获取当前运行的Activity 实例,而无需传递上下文参数。

getpackageinfoasuser方法

getpackageinfoasuser方法

getpackageinfoasuser方法摘要:1.方法简介2.方法作用3.方法参数4.方法实现5.实战应用正文:一、方法简介getpackageinfoasuser方法是Android开发中用于获取应用程序包信息的一种方法。

此方法可以获取到安装在设备上的应用程序的详细信息,如包名、版本号、权限等。

该方法适用于需要了解应用程序详细信息的情景,如应用程序管理、检测等。

二、方法作用getpackageinfoasuser方法主要用于以下场景:1.获取应用程序的基本信息,如包名、版本号等。

2.检查应用程序的权限设置,了解应用程序是否具有所需权限。

3.对应用程序进行管理,如卸载、更新等。

4.检测应用程序是否存在安全风险,如恶意软件、病毒等。

三、方法参数getpackageinfoasuser方法的主要参数如下:1.context:当前Activity的上下文对象。

2.packageName:需要获取信息的应用程序包名。

四、方法实现在Android开发中,可以使用以下代码实现getpackageinfoasuser方法:```javaPackageManager packageManager =context.getPackageManager();try {PackageInfo packageInfo =packageManager.getPackageInfo(packageName, PackageManager.GET_CONTENT_URI);// 获取到的PackageInfo对象中包含应用程序的详细信息String packageName = packageInfo.getName();int versionCode = packageInfo.getVersionCode();String versionName = packageInfo.getVersionName();// 获取应用程序的权限列表PermissionInfo[] permissions =packageInfo.getDeclaredPermissions();} catch (NotFoundException e) {e.printStackTrace();}```五、实战应用以下是一个实战中的应用场景:在某个应用程序管理类中,需要检测安装在设备上的应用程序的权限设置。

getpackageinfoasuser方法

getpackageinfoasuser方法

getpackageinfoasuser方法getPackageInfoAsUser方法是一个在Android开发中常用的方法。

它用于
获取指定应用程序包的详细信息,包括版本号、应用程序名称、权限等。


方法的一个重要参数是用户ID,使得我们可以获取指定用户安装的应用程
序的信息。

在Android开发中,用户ID用于区分不同的应用程序安装环境。

通过使
用getPackageInfoAsUser方法,我们可以从不同用户的角度获取应用程序包
的信息,进而进行更加精确的处理。

使用getPackageInfoAsUser方法,我们可以根据应用程序的包名获取应
用程序的版本号。

这对于应用程序的更新和兼容性检查非常有用。

我们也可
以获取应用程序的名称,这在某些情况下需要显示给用户。

getPackageInfoAsUser方法还可以获取应用程序的权限列表。

这对于进行
权限管理和安全性分析非常重要。

通过了解应用程序的权限要求,我们可以
评估应用程序的安全性,并决定是否信任该应用程序。

getPackageInfoAsUser方法是一种非常有用的方法,它使得我们能够获取
指定应用程序包的详细信息。

通过该方法,我们可以获取应用程序的版本号、名称和权限列表,进而进行各种操作,如更新检查、权限管理和安全性分析等。

这对于Android开发者来说是一项必备的功能。

如何查看Androidapk的包名?

如何查看Androidapk的包名?

如何查看Androidapk的包名?有以下四种⽅法可以查看apk的包名,之后有别的⽅法,会接着更新⽂档的。

1. 安装APK包名查看器; 2. 源码AndroidManifest.xml中查看package包名; 3. 利⽤"*\adt-bundle-windows-x86-20130917\sdk\tools\hierarchyviewer.bat"获取当前活动package的包名,同时可以获取控件的坐标和ID; 4. 利⽤aapt查看包名: tools或者platform tools或者sdk/build-tools/aapt.exe(进⼊cmd) aapt dump badging *.apk 由于输出信息⽐较多,容易覆盖包名,建议把info输出到txt⽂件中: aapt dump badging *.apk >info.txt 输出如下: Package Groups (1) Package Group 0 id=127 packageCount=1 name=com.chartcross.gpstest Package 0 id=127 name=com.chartcross.gpstest typeCount=11 type 0 configCount=1 entryCount=32 spec resource 0x7f010000 com.chartcross.gpstest:attr/adSize: flags=0x00000000 spec resource 0x7f010001 com.chartcross.gpstest:attr/adSizes: flags=0x00000000 spec resource 0x7f010002 com.chartcross.gpstest:attr/adUnitId: flags=0x00000000 5. adb logcat抓取当前运⾏的apk的包名:ActivityManager(数字):Displayed 包名/类名:+ **ms adb logcat > log.txt (从最后log开始找或者搜索关键字) 输出如下: I/ActivityManager( 506): Displayed com.android.gallery3d/.app.GalleryActivity: +1s89ms I/ActivityManager( 506): Process com.android.music (pid 1009) has died W/BlobCache( 1520): cannot read header D/ ( 136): RPCSendMsgToClient: remote_app_id = 0, context_id = 0 D/ ( 162): AppRecvFromRPCIFTask: recieved_bytes = 54 D/ ( 162): IPC ReadCB: RSP/IND idx(91) D/ ( 156): AppRecvFromRPCIFTask: recieved_bytes = 54 ⼜或者以关键字"UNCHER"搜索: W/RenderThread( 1030): type=1400 audit(0.0:86): avc: denied { read write } for path="/dev/mali" dev="tmpfs" ino=11374 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:device:s0 tclass=chr_file I/ActivityManager( 506): START u0 {act=android.intent.action.MAIN cat=[UNCHER]flg=0x10000000 cmp=com.android.gallery3d/.app.GalleryActivity (has extras)} from uid 10008 on display 0 D/MSM ( 134): event = D/MSM ( 134): event = !modem event ignore D/MSM ( 134): --> wait for event。

android获取当前运行Activity名字的方法

android获取当前运行Activity名字的方法
第二种:要稍微麻烦一点,需要一个权限(推荐) 复制代码 代码如下: <uses-permission android:name="android.permission.GET_TASKS" />
private String getRunningActivityName(){ ActivityManager activityManager=(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); String runningActivity=activityManager.getRunningTasks(1).get(0).topActivity.getClassName(); return runningActivity;
这篇文章主要介绍了android开发中使用mms模块收发单卡和双卡短信的教程文中举了motoxt800手机估计已经落伍很久了的例子来说明如何解决双卡双待时的短信异常问题需要的朋友可以参考下
android获取当前运行 Activity名字的方法
本文实例讲述了android获取当前运行Activity名字的方法,可以避免即时聊天再出现通知的情况。分享给大家供大家参考。具 体方法如下:
最近在做IM时需要知道当前Activity是哪一个Activity.自己整理一下两种方法
第一种:要方便一点(Service中无法使用)
复制代码 代码如下: private String getRunningActivityName() {
String contextString = context.toString(); return contextString.substring(lastIndexOf(".") + 1, contextString.indexOf("@")); }

Android编程实现应用获取包名、版本号、权限等信息的方法

Android编程实现应用获取包名、版本号、权限等信息的方法

Android编程实现应⽤获取包名、版本号、权限等信息的⽅法本⽂实例讲述了Android编程实现应⽤获取包名、版本号、权限等信息的⽅法。

分享给⼤家供⼤家参考,具体如下:/*** 获取当前应⽤程序的包名* @param context 上下⽂对象* @return 返回包名*/public static String getAppProcessName(Context context) {//当前应⽤pidint pid = android.os.Process.myPid();//任务管理类ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);//遍历所有应⽤List<ActivityManager.RunningAppProcessInfo> infos = manager.getRunningAppProcesses();for (ActivityManager.RunningAppProcessInfo info : infos) {if (info.pid == pid)//得到当前应⽤return info.processName;//返回包名}return "";}/*** 获取程序图标* @param context* @param packname 应⽤包名* @return*/public Drawable getAppIcon(Context context,String packname){try {//包管理操作管理类PackageManager pm = context.getPackageManager();//获取到应⽤信息ApplicationInfo info = pm.getApplicationInfo(packname, 0);return info.loadIcon(pm);} catch (NameNotFoundException e) {e.printStackTrace();}return null;}/*** 获取程序的版本号* @param context* @param packname* @return*/public String getAppVersion(Context context,String packname){//包管理操作管理类PackageManager pm = context.getPackageManager();try {PackageInfo packinfo = pm.getPackageInfo(packname, 0);return packinfo.versionName;} catch (NameNotFoundException e) {e.printStackTrace();}return packname;}/*** 获取程序的名字* @param context* @param packname* @return*/public String getAppName(Context context,String packname){//包管理操作管理类PackageManager pm = context.getPackageManager();try {ApplicationInfo info = pm.getApplicationInfo(packname, 0);return info.loadLabel(pm).toString();} catch (NameNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return packname;}/** 获取程序的权限*/public String[] getAllPermissions(Context context,String packname){try {//包管理操作管理类PackageManager pm = context.getPackageManager();PackageInfo packinfo = pm.getPackageInfo(packname, PackageManager.GET_PERMISSIONS);//获取到所有的权限return packinfo.requestedPermissions;} catch (NameNotFoundException e) {e.printStackTrace();}return null;}/*** 获取程序的签名* @param context* @param packname* @return*/public static String getAppSignature(Context context,String packname){try {//包管理操作管理类PackageManager pm = context.getPackageManager();PackageInfo packinfo = pm.getPackageInfo(packname, PackageManager.GET_SIGNATURES);//获取当前应⽤签名return packinfo.signatures[0].toCharsString();} catch (NameNotFoundException e) {e.printStackTrace();}return packname;}/*** 获取当前展⽰的Activity名称* @return*/private static String getCurrentActivityName(Context context){ActivityManager activityManager=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);String runningActivity=activityManager.getRunningTasks(1).get(0).topActivity.getClassName();return runningActivity;}更多关于Android相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家Android程序设计有所帮助。

Android获取已安装应用信息(图标,名称,版本号,包)

Android获取已安装应用信息(图标,名称,版本号,包)

Android获取已安装应⽤信息(图标,名称,版本号,包)Android 菜市场上有⼀款应⽤较 ShareApp,可以显⽰,管理,分享Android⼿机上安装的应⽤。

但⽐较不爽的是,它把很多系统⾃带的应⽤程序也都显⽰了出来。

这些程序往往是⽆法卸载的,更⽆法分享,让“已安装应⽤程序”的列表显的⾮常凌乱。

我在⼿机上运⾏了⼀下,结果Gtalk,DRMService这些系统应⽤都显⽰出来了..⽐较不爽。

于是⾃⼰写了个程序,看看能不能只显⽰⽤户⾃⼰安装的程序。

程序⼤概分成三个部分:1.获取⼿机已安装的所有应⽤package的信息(其中包括⽤户⾃⼰安装的,还有系统⾃带的);2.滤除系统⾃带应⽤;3.通过列表显⽰出应⽤程序的图标(icon),和其他⽂字信息(应⽤名称,包名称package name,版本号等等)⾸先,我们定义⼀个数据结构,来保存应⽤程序信息(icon,name,packageName,versionName,versionCode,等)publicclass AppInfo {public String appName="";public String packageName="";public String versionName="";publicint versionCode=0;public Drawable appIcon=null;publicvoid print(){Log.v("app","Name:"+appName+" Package:"+packageName);Log.v("app","Name:"+appName+" versionName:"+versionName);Log.v("app","Name:"+appName+" versionCode:"+versionCode);}}然后我们通过来获取已安装的应⽤包信息。

Android编程获取APP应用程序基本信息辅助类【APP名称、包名、图标,版本号等】

Android编程获取APP应用程序基本信息辅助类【APP名称、包名、图标,版本号等】

Android编程获取APP应⽤程序基本信息辅助类【APP名称、包名、图标,版本号等】本⽂实例讲述了Android编程获取APP应⽤程序基本信息辅助类。

分享给⼤家供⼤家参考,具体如下:经常会⽤到获取App信息,可以⽤这个⼯具类,可以获得 APP的应⽤程序名称、包名、图标,版本号基本信息//跟App相关的辅助类public class AppUtils {/*** 获取应⽤程序名称*/public static synchronized String getAppName(Context context) {try {PackageManager packageManager = context.getPackageManager();PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);int labelRes = belRes;return context.getResources().getString(labelRes);} catch (Exception e) {e.printStackTrace();}return null;}/*** [获取应⽤程序版本名称信息]* @param context* @return 当前应⽤的版本名称*/public static synchronized String getVersionName(Context context) {try {PackageManager packageManager = context.getPackageManager();PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);return packageInfo.versionName;} catch (Exception e) {e.printStackTrace();}return null;}/*** [获取应⽤程序版本名称信息]* @param context* @return 当前应⽤的版本名称*/public static synchronized int getVersionCode(Context context) {try {PackageManager packageManager = context.getPackageManager();PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);return packageInfo.versionCode;} catch (Exception e) {e.printStackTrace();}return 0;}/*** [获取应⽤程序版本名称信息]* @param context* @return 当前应⽤的版本名称*/public static synchronized String getPackageName(Context context) {try {PackageManager packageManager = context.getPackageManager();PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);return packageInfo.packageName;} catch (Exception e) {e.printStackTrace();}return null;}/*** 获取图标 bitmap* @param context*/public static synchronized Bitmap getBitmap(Context context) {PackageManager packageManager = null;ApplicationInfo applicationInfo = null;try {packageManager = context.getApplicationContext().getPackageManager();applicationInfo = packageManager.getApplicationInfo(context.getPackageName(), 0);} catch (NotFoundException e) {applicationInfo = null;}Drawable d = packageManager.getApplicationIcon(applicationInfo); //xxx根据⾃⼰的情况获取drawableBitmapDrawable bd = (BitmapDrawable) d;Bitmap bm = bd.getBitmap();return bm;}}更多关于Android相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家Android程序设计有所帮助。

AndroidApplicationInfo应用程序信息的详解

AndroidApplicationInfo应用程序信息的详解

AndroidApplicationInfo应⽤程序信息的详解Android ApplicationInfo 应⽤程序信息1、简述1 ApplicationInfo是android.content.pm包下的⼀个实体类,⽤于封装应⽤的信息,flags是其中的⼀个成员变量public int flags = 0;⽤于保存应⽤的标志信息。

2 ApplicationInfo 通过它可以得到⼀个应⽤基本信息。

这些信息是从AndroidManifest.xml的< application >标签获取的3 ApplicationInfo对象⾥保存的信息都是<application>标签⾥的属性值4 ApplicationInfo与ResolveInfo⽐较:前者能够得到Icon、Label、meta-data、description。

后者只能得到Icon、Label2、获取ApplicationInfo2.1 、获取⼿机上安装所有程序对应的 ApplicationInfo/*** 获取⼿机上安装的所有的程序对应的 ApplicationInfo* 它是通过解析AndroidManifest.xml的< application>标签中得到的,所以它能得到所有的app** 获取⼿机上的所有的安装的应⽤程序信息* 参数为标识⼀般为 PackageManager.GET_UNINSTALLED_PACKAGES*/List<ApplicationInfo> list = packageManager.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);2.2 、获取指定包名对应的 ApplicationInfo/*** 获取指定应⽤程序 ApplicationInfo* 参数⼀对应应⽤程序的包名* 参数⼆应⽤程序对应的标识通常为 0*/ApplicationInfo applicationInfo = packageManager.getApplicationInfo("com.androidlongs.contactsapplication", 0);3、通过ApplicationInfo来获取应⽤程序的基本信息3.1 、获取应⽤程序对应的包名、应⽤名称//获取应⽤图标Drawable drawable = applicationInfo.loadIcon(packageManager);//获取应⽤程序的包名String appPackageName = applicationInfo.packageName;//获取应⽤名//参数 packageManager 是应⽤管理者对象String appName =applicationInfo.loadLabel(packageManager).toString();3.2 、获取应⽤程序对应数据的⽬录以及占⽤的空间⼤⼩//获取应⽤存放数据⽬录String dir = applicationInfo.sourceDir;Log.d("app ","应⽤存放数据⽬录 " +dir);//获取应⽤数据⼤⼩ong length = new File(dir).length();//转换为 Mfloat size = length*1f/1024/1024;Log.d("app ","应⽤数据⼤⼩ " +length+"\t"+size);3.3 、判断是否安装在外置储存空间存//判断是否安装在外存int flags = applicationInfo.flags;if((flags&ApplicationInfo.FLAG_EXTERNAL_STORAGE)==ApplicationInfo.FLAG_EXTERNAL_STORAGE){Log.d("app "," 安装在外置存储空间 ");}else {Log.d("app "," 安装在内置存储空间 ");}3.4 、判断应⽤程序是否是系统应⽤//判断是否是系统应⽤if((flags&ApplicationInfo.FLAG_SYSTEM)==ApplicationInfo.FLAG_SYSTEM){Log.d("app "," 是系统应⽤ ");}else{Log.d("app "," 不是系统应⽤ ");}3.5 、manageSpaceActivityName/*** 从”android:manageSpaceActivity“属性得到* ⽤于指定⼀个Activity来管理数据,* 它最终会出现在设置->应⽤程序管理中,* 默认为按钮为”清除数据”,指定此属性后,该按钮可点击跳转到该Activity, 让⽤户选择性清除哪些数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、有源码情况
直接打开AndroidManifest.xml文件,找到包含android.intent.action.MAIN和UNCHER对应的activity。

如下图中第三行package为com.cola.ui,第七行主Activity为
com.cola.ui.ColaBox(.ColaBox为Activity简写方式)。

[html]view plain copy
1.<?xml version="1.0"encoding="utf-8"?>
2.<manifest xmlns:android="/apk/res/android"
3.package="com.cola.ui"
4.android:versionCode="1"
5.android:versionName="1.0.0">
6.<application android:icon="@drawable/icon"android:label="@string/app_na
me">
7.<activity android:name=".ColaBox"
8.android:label="@string/app_name">
9.<intent-filter>
10.<action android:name="android.intent.action.MAIN"/>
11.<category android:name="UNCHER"/>
12.</intent-filter>
13.</activity>
14.<activity android:name="Frm_Addbills"></activity>
15.<activity android:name="Frm_Editacctitem"></activity>
16.<activity android:name="Grid_bills"></activity>
17.<service android:name="LocalService"android:exported="true"android:ena
bled="true"/>
18.
19.</application>
20.<uses-permission android:name="android.permission.READ_CONTACTS"/>
21.
22.
23.</manifest>
二、只有Apk的情况
(1)aapt
使用命令行aapt dump xmltree ColaBox.apk AndroidManifest.xml
(2)使用apktool
使用反编译工具apktool,反编译后打开AndroidManifest.xml文件,查找方式同“有源码情况”
(3)aapt
感谢“天地会珠海分舵”地址:
/zhubaitian/article/details/38926679
三、没有apk,应用已经安装到手机或虚拟机中
1.logcat
.清除logcat内容,使用命令adb logcat -c
.启动logcat,使用命令adb logcat ActivityManager:I *:s .启动要查看的程序,
2.dumpsys
(1)启动要查看的程序;
(2)命令行输入:adb shell dumpsys window w |findstr \/ |findstr name=。

相关文档
最新文档