`
liuyun025
  • 浏览: 123888 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android中各种info信息的获取和使用

阅读更多

     首先PackageItemInfo,它是包含了一些信息的基类,它的直接子类有:ApplicationInfo、

ComponentInfo、InstrumentationInfo、PermissionGroupInfo、PermissionInfo。它的间接子类

有:ActivityInfo、ProviderInfo、ServiceInfo。这个类包含的信息对于所有包中项目是平等的。这些

Package items是被Package manager所持有的。这个类提供了属性的非常普通的基本设置:label、

icon和meta-data。这个类的意图不是被自己调用。它在这只是简单地分享被package manager返回的

所有items之间的普通定义。比如,它自己并不实现Parcelable接口,但却帮助实现了Parcelable的子类

提供了方便的方法。

     ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的Androdimanifest.xml的<

application>标签中收集到的。

     ResolveInfo这个类是通过解析一个与IntentFilter相对应的intent得到的信息。它部分地对应于从

AndroidManifest.xml的<intent-filter>标签收集到的信息。

     PackageManager这个类是用来返回各种的关联了当前已装入设备了的应用的包的信息。你可以通过

getPacageManager来得到这个类。

     通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下:

PackageManager packageManager = this.getPackageManager();

List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);

     通过以上方法,可以得到手机中安装的所有应用程序,既包括了手动安装的apk包的信息,也包括了系统预装的应用软

件的信息,要区分这两类软件可使用以下方法:

a.packageInfoList获取的packageInfo,再通过packageInfo.applicationInfo获取applicationInfo

 

b.判断(applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)的值,该值大于0时,表示获取的应用

 

为系统预装的应用,反之则为手动安装的应用。

 

大家可以看下代码,说明已经写在注释中。

 

(1)获取应用的代码:

 

/**

* 查询手机内非系统应用

* @param context

* @return

*/

public static List<PackageInfo> getAllApps(Context context) {

List<PackageInfo> apps = new ArrayList<PackageInfo>();

PackageManager pManager = context.getPackageManager();

//获取手机内所有应用

List<PackageInfo> paklist = pManager.getInstalledPackages(0);

for (int i = 0; i < paklist.size(); i++) {

PackageInfo pak = (PackageInfo) paklist.get(i);

//判断是否为非系统预装的应用程序

if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {

// customs applications

apps.add(pak);

}

}

return apps;

}

 

 

(2)获取图片、应用名、包名:

 

                   PackageManager pManager = MessageSendActivity.this.getPackageManager();

                   List<PackageInfo> appList  = Utils.getAllApps(MessageSendActivity.this);

                   

                   for(int i=0;i<appList.size();i++) {

                    PackageInfo pinfo = appList.get(i);

                    //set Icon

                    pManager.getApplicationIcon(pinfo.applicationInfo);

                    //set Application Name

                                pManager.getApplicationLabel(pinfo.applicationInfo);

                    //set Package Name 

                    pinfo.applicationInfo.packageName;

                   

                   }

 

 

(3)获取支持分享的应用的代码:

 

 

   List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();  

   Intent intent=new Intent(Intent.ACTION_SEND,null);  

   intent.addCategory(Intent.CATEGORY_DEFAULT);  

   intent.setType("text/plain");  

   PackageManager pManager = context.getPackageManager();

   mApps = pManager.queryIntentActivities(intent,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);  

   

   return mApps;  

}

 

 

     由于该方法,返回的并不是 PackageInfo 对象。而是 ResolveInfo。因此获取图片、应用名、包名的方法不一样,

 

如下:

                         PackageManager pManager = MessageSendActivity.this.getPackageManager();

                   

                   /*********************查询手机内所有支持分享的应用*********************/

                   List<ResolveInfo> resolveList  = Utils.getShareApps(MessageSendActivity.this);

                   

                   for(int i=0;i<resolveList.size();i++) {

                    ResolveInfo resolve = resolveList.get(i);

                    ShareItemInfo shareItem = new ShareItemInfo();

                    //set Icon

                   shareItem.setIcon(resolve.loadIcon(pManager));

                    //set Application Name

                    shareItem.setLabel(resolve.loadLabel(pManager).toString());

                    //set Package Name 

                    shareItem.setPackageName(resolve.activityInfo.packageName);

                   

                   }

 

 

总结:

 

通过 PackageInfo  获取具体信息方法:


包名获取方法:packageInfo.packageName

 

icon获取获取方法:packageManager.getApplicationIcon(applicationInfo)

 

应用名称获取方法:packageManager.getApplicationLabel(applicationInfo)

 

使用权限获取法:packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS)

                                                   .requestedPermissions


通过 ResolveInfo 获取具体信息方法:


包名获取方法:resolve.activityInfo.packageName

 

icon获取获取方法:resolve.loadIcon(packageManager)

 

应用名称获取方法:resolve.loadLabel(packageManager).toString()

 

 

分享到:
评论

相关推荐

    Android获取cpu,内存,磁盘使用率信息

    在Android平台上,获取CPU、内存和磁盘使用率信息对于开发者来说是十分重要的,这有助于监控设备性能,优化应用运行,以及提供用户友好的反馈。...学习并理解这个示例将对掌握Android系统信息获取有极大的帮助。

    Android中获取系统内存信息以及进程信息

    在Android系统中,开发者可以通过Android提供的API来获取系统的内存信息以及正在运行的进程状态。这一功能主要涉及到`ActivityManager`类的使用。`ActivityManager`是Android SDK中的一个关键组件,它提供了对系统...

    android硬件信息获取样例

    此外,还可以通过`/proc/cpuinfo`文件获取CPU的详细信息,但这些操作通常需要权限,因此在应用中使用时要注意处理权限问题。 2. 内存信息获取: 获取内存信息通常通过`ActivityManager`类的`getMemoryInfo()`方法...

    获取基站信息android

    Android 中获取基站信息需要使用两个类:TelephonyManager 和 GsmCellLocation。TelephonyManager 是 Android 中的一个系统服务,提供了对电话通讯服务的访问。它不能直接实例化,需要通过 Context....

    Android 获取设备各种信息以及其它

    Android 操作系统中,获取设备各种信息是非常重要的,特别是在手机开发中。 Android 提供了一个类 android.telephony.TelephonyManager,用于获取手机相关信息。在本篇文章中,我们将详细介绍如何使用 ...

    android 获取cpu使用率, 内存 实时数据

    在Android中,获取CPU使用率通常需要读取 `/proc/stat` 文件,该文件包含了系统运行的各种统计信息。以下是一个简单的示例,展示如何计算CPU使用率: ```java public float getCpuUsage() { String[] cpuUsage = ...

    android获取手机信息

    Android 获取手机信息 Android 操作系统提供了...使用 Java 代码可以轻松地获取 Android 手机的各种信息,包括安装的应用信息、手机可用内存和总内存、手机 CPU 信息等。这些信息对于开发 Android 应用程序非常有用。

    Android 获取设备信息

    在Android应用开发中,获取设备信息是常见的需求,这包括但不限于设备型号、硬件特性、操作系统版本等。这些信息对于调试、个性化用户体验或者数据分析都非常重要。本文将深入探讨如何在Android中获取这些关键信息。...

    android获取wifi和Ethernet信息

    获取带有以太网接口的android系统中ethernet和wifi连接信息(连接状态,IP地址,dns,netmask等信息)

    Android中获取所有应用程序信息

    总结起来,获取Android中所有应用程序信息的关键在于正确使用`PackageManager`的`queryIntentActivities()`方法,结合`Intent`来定义查询条件。通过对返回的`ResolveInfo`列表进行遍历,可以获取到每个应用的详细...

    获取Android设备常见硬件信息

    在Android系统中,获取设备的硬件信息是开发者和普通用户都可能需要的操作。这涉及到对设备的CPU(中央处理器)、内存(RAM)、ROM(只读存储器)以及摄像头等核心硬件组件的理解。以下是对这些硬件信息的详细说明:...

    Android LocationManager 获取经纬度和卫星信息

    // 位置信息获取的时间戳 // 处理位置信息 } // 其他LocationListener的方法... }; locationManager.requestLocationUpdates("gps", 2000, 0, locationListener); // 每2秒更新一次,无距离阈值 ``` 除了位置...

    Android中获取应用程序(包)的信息 PackageManager的使用

    在Android开发中,`PackageManager`是一个至关重要的组件,它提供了获取和管理安装在设备上的所有应用包信息的能力。本文将详细讲解如何利用`PackageManager`来获取Android应用程序(包)的相关信息。 首先,让我们...

    Android系统中如何获取系统进程信息

    ### Android系统中如何获取系统进程信息 在Android开发过程中,获取系统进程信息是实现设备监控、性能优化等应用功能的基础。本文将详细介绍如何利用Android提供的API来获取系统进程信息,并展示一个简易进程管理器...

    获取android手机信息

    以下是一些关键的知识点,涵盖了如何在Android中获取描述中提到的各种信息: 1. **通讯录**:在Android中,我们可以使用`ContentResolver`和`ContactsContract`类来访问通讯录。首先,我们需要获取读取联系人权限,...

    获取android硬件信息

    在Android中,获取CPU信息相对复杂,通常需要使用JNI或者第三方库。一个简单的方法是读取/proc/cpuinfo文件,但这种方法可能无法获取到详细的CPU型号,只能得到一些基本信息,比如核心数: ```java FileInputStream...

    android 获取短信和通话记录信息

    在Android平台上,获取短信和通话记录信息是开发者常用于实现各种功能,如日志记录、安全监控或备份应用的关键操作。下面将详细讲解如何在Android系统中获取这些数据。 一、获取短信信息 1. 权限声明: 首先,为了...

    Android获取手机号码和运营商信息的方法

    在Android平台上,获取手机...总的来说,获取Android设备的手机号码和运营商信息需要正确配置权限,并使用`TelephonyManager`类提供的方法。在实际应用中,还需要处理可能出现的异常和空值情况,确保用户体验的流畅性。

    Android 各种音量的获取

    在Android中,我们可以使用`AudioManager`类来获取不同类型的音量,具体实现如下: ```java // 获取AudioManager实例 AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); // 通话音量 ...

    Android系统信息和Apk应用信息获取.rar

    这个压缩包"Android系统信息和Apk应用信息获取.rar"可能包含了多个示例或者库,用于帮助开发者实现这些功能。由于无法直接查看具体内容,我将根据常规方法来讲解如何在Android中获取这些信息。 **获取Android系统...

Global site tag (gtag.js) - Google Analytics