package com.smartandroid.sa.appInfo;
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.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;
import android.graphics.drawable.Drawable;
import com.smartandroid.sa.entity.MyPermission;
public class AppInfo {
private Context c;
public AppInfo(Context context) {
this.c = context;
}
/**
* Get the App's PackageName
*
* @return the App's PackageName
*/
public String getPackageName() {
return c.getPackageName();
}
/**
* Get The App VersionCode
*
* @param context
* @return the App VersionCode
*/
public static int getVerCode(Context context) {
int verCode = -1;
try {
verCode = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0).versionCode;
} catch (NameNotFoundException e) {
}
return verCode;
}
/**
* Get The App VersionName
*
* @param context
* @return the App VersionName
*/
public static String getVerName(Context context) {
String verName = "";
try {
verName = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0).versionName;
} catch (NameNotFoundException e) {
}
return verName;
}
/**
* Get The AppName
*
* @param context
* @return the AppName
*/
public static String getAppName(Context context) {
String verName = context
.getResources()
.getText(
context.getResources().getIdentifier("app_name",
"string", context.getPackageName())).toString();
return verName;
}
/**
* Get The AppIcon
*
* @param context
* @return the AppIcon
*/
public static Drawable getAppIcon(Context context) {
Drawable icon = null;
try {
icon = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0).applicationInfo
.loadIcon(context.getPackageManager());
} catch (NameNotFoundException e) {
}
return icon;
}
/**
* Get The App FirstInstallTime(requires API level 9)
*
* @param context
* @return the App FirstInstallTime
*/
public static long getFirstInstallTime(Context context) {
long fit = 0;
try {
fit = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0).firstInstallTime;
} catch (NameNotFoundException e) {
}
return fit;
}
/**
* Get The App LastUpdateTime(requires API level 9)
*
* @param context
* @return the App LastUpdateTime
*/
public static long getLastUpdateTime(Context context) {
long fit = 0;
try {
fit = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0).lastUpdateTime;
} catch (NameNotFoundException e) {
}
return fit;
}
/**
* Get the App's All use Permission
*
* @param packageName
* @return the use Permissions by ArrayList<MyPermission> permissions
*/
public ArrayList<MyPermission> getUsesPermission(String packageName) {
ArrayList<MyPermission> myPerms = new ArrayList<MyPermission>();
try {
PackageManager packageManager = c.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
packageName, PackageManager.GET_PERMISSIONS);
String[] usesPermissionsArray = packageInfo.requestedPermissions;
for (int i = 0; i < usesPermissionsArray.length; i++) {
MyPermission permi = new MyPermission();
// �õ�ÿ��Ȩ������,��:android.permission.INTERNET
String usesPermissionName = usesPermissionsArray[i];
permi.setPermissionName(usesPermissionName);
System.out.println("usesPermissionName=" + usesPermissionName);
// ͨ��usesPermissionName��ȡ��Ȩ����ϸ��Ϣ
PermissionInfo permissionInfo = packageManager
.getPermissionInfo(usesPermissionName, 0);
// ��ø�Ȩ�������ĸ�Ȩ����,��:����ͨ��
PermissionGroupInfo permissionGroupInfo = packageManager
.getPermissionGroupInfo(permissionInfo.group, 0);
permi.setPermissionGroup(permissionGroupInfo.loadLabel(
packageManager).toString());
System.out.println("permissionGroup="
+ permissionGroupInfo.loadLabel(packageManager)
.toString());
// ��ȡ��Ȩ�ı�ǩ��Ϣ,����:��ȫ���������Ȩ��
String permissionLabel = permissionInfo.loadLabel(
packageManager).toString();
permi.setPermissionLabel(permissionLabel);
System.out.println("permissionLabel=" + permissionLabel);
// ��ȡ��Ȩ����ϸ������Ϣ,����:�����Ӧ�ô����������ֺ�ʹ���Զ�������Э��
// �����������ijЩӦ���ṩ���������������ݵ�;��,���Ӧ�������Ȩ������������������.
String permissionDescription = permissionInfo.loadDescription(
packageManager).toString();
permi.setPermissionDescription(permissionDescription);
System.out.println("permissionDescription="
+ permissionDescription);
System.out
.println("===========================================");
myPerms.add(permi);
}
return myPerms;
} catch (Exception e) {
}
return myPerms;
}
/**
* Get the Device's ALL Third Apps
*
* @return the Device's ALL Third Apps
*/
public String getAllThirdApp() {
String result = "";
List<PackageInfo> packages = c.getPackageManager()
.getInstalledPackages(0);
for (PackageInfo i : packages) {
if ((i.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
result += i.applicationInfo.loadLabel(c.getPackageManager())
.toString() + ",";
}
}
return result.substring(0, result.length() - 1);
}
}