編輯:關於Android編程
本文所述為Androdi獲取手機應用列表的方法,比如獲取到Android應用的軟件屬性、大小和應用程序路徑、應用名稱等,獲取所有已安裝的Android應用列表,包括那些卸載了的,但沒有清除數據的應用程序,同時在獲取到應用信息的時候,判斷是不是系統的應用程序,這是一個應用管理器所必需具備的功能。
具體實現代碼如下:
//AppInfoProvider.java
package com.xh.ui;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
/**
* 類名稱:AppInfoProvider
* 類描述:獲取應用程序的相關信息
* 創建人:LXH
*/
public class AppInfoProvider {
private PackageManager packageManager;
//獲取一個包管理器
public AppInfoProvider(Context context){
packageManager = context.getPackageManager();
}
/**
*獲取系統中所有應用信息,
*並將應用軟件信息保存到list列表中。
**/
public List<AppInfo> getAllApps(){
List<AppInfo> list = new ArrayList<AppInfo>();
AppInfo myAppInfo;
//獲取到所有安裝了的應用程序的信息,包括那些卸載了的,但沒有清除數據的應用程序
List<PackageInfo> packageInfos = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
for(PackageInfo info:packageInfos){
myAppInfo = new AppInfo();
//拿到包名
String packageName = info.packageName;
//拿到應用程序的信息
ApplicationInfo appInfo = info.applicationInfo;
//拿到應用程序的圖標
Drawable icon = appInfo.loadIcon(packageManager);
//拿到應用程序的大小
//long codesize = packageStats.codeSize;
//Log.i("info", "-->"+codesize);
//拿到應用程序的程序名
String appName = appInfo.loadLabel(packageManager).toString();
myAppInfo.setPackageName(packageName);
myAppInfo.setAppName(appName);
myAppInfo.setIcon(icon);
if(filterApp(appInfo)){
myAppInfo.setSystemApp(false);
}else{
myAppInfo.setSystemApp(true);
}
list.add(myAppInfo);
}
return list;
}
/**
*判斷某一個應用程序是不是系統的應用程序,
*如果是返回true,否則返回false。
*/
public boolean filterApp(ApplicationInfo info){
//有些系統應用是可以更新的,如果用戶自己下載了一個系統的應用來更新了原來的,它還是系統應用,這個就是判斷這種情況的
if((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0){
return true;
}else if((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0){//判斷是不是系統應用
return true;
}
return false;
}
}
與實例相關的Java類如下:
//AppInfo.java
package com.xh.ui;
import android.graphics.drawable.Drawable;
/**
* 類名稱:AppInfo
* 類描述:應用程序類,包括了程序相關屬性
* 創建人:LXH
*/
public class AppInfo {
private Drawable icon;
private String appName;
private String packageName;
private boolean isSystemApp;
private long codesize;
public long getCodesize() {
return codesize;
}
public void setCodesize(long codesize) {
this.codesize = codesize;
}
public Drawable getIcon() {
return icon;
}
public void setIcon(Drawable icon) {
this.icon = icon;
}
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public boolean isSystemApp() {
return isSystemApp;
}
public void setSystemApp(boolean isSystemApp) {
this.isSystemApp = isSystemApp;
}
}
實例中配有詳盡的注釋,讀者可以在理解程序功能的基礎上根據自身項目需求加以改進和完善。
Android編程實現3D旋轉效果實例
本文實例講述了Android編程實現3D旋轉效果的方法。分享給大家供大家參考,具體如下:下面的示例是在Android中實現圖片3D旋轉的效果。實現3D效果一般使用Open
Android Animation學習筆記
關於動畫的實現,Android提供了Animation,在Android SDK介紹了2種Animation模式: 1. Tween Animation:通過對場景裡的對
Android官方開發文檔Training系列課程中文版:網絡操作之網絡管理
原文地址:http://android.xsoftlab.net/training/basics/network-ops/managing.html這節課將會學習如何對網
Android 使用SharedPreferences進行數據存儲和讀取數據
很多時候我們開發的軟件需要向用戶提供軟件參數設置功能,例如我們常用的QQ,用戶可以設置是否允許陌生人添加自己為好友。對於軟件配置參數的保存,如果是window軟件通常我們