package tv.pps.bi.proto.biz;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import tv.pps.bi.db.DBAPPManager;
import tv.pps.bi.proto.model.App;
import tv.pps.bi.proto.model.AppActivity;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
/**
* ��ȡAPP��Ϣ
* @author jiangqingqing
*
*/
public class InstalledAppService {
private Context mContext;
public InstalledAppService(Context pContext) {
this.mContext=pContext;
}
/**
* ��ѯ��װapp�Ļ�����Ϣ Appinstalled_app = 8; ��װ��Щapp �Լ�app�Ļ�����Ϣ��ʹ�����
* @return APP��Ϣ����ļ���
*/
public List<App> getUserInstalled_app()
{
PackageManager packM= mContext.getPackageManager();
List<PackageInfo> packageInfos = packM.getInstalledPackages(0);
List<App> appinfos = new ArrayList<App>();
DBAPPManager db = DBAPPManager.getDBManager(mContext);
// db.createView();//������ͼ
int count = db.DBCount();
if(count<=300&&count>=0){
}else{
db.deleteDBData(count);
}
for (int i = 0; i < packageInfos.size(); i++) {
PackageInfo temp = packageInfos.get(i);
ApplicationInfo appInfo = temp.applicationInfo;
App app_info = new App();
String appName = temp.applicationInfo.loadLabel(mContext.getPackageManager()).toString();
String packagename = temp.packageName;
if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
List<AppActivity> appdatas = db.getData(packagename);//ͨ��appname��ȡapp��ʹ�����
app_info.setName(replaceBlank(appName));
app_info.setVersion(temp.versionName!=null?temp.versionName:"1.0");// �汾����
app_info.setActivity(appdatas);// app��ʹ�����list����
appinfos.add(app_info);
}
}
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
return appinfos;
}
/**
* ȥ���ַ����еĿոس������з����Ʊ��
* @param str
* @return
*/
private static String replaceBlank(String str) {
String dest = "";
if (str != null) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
dest = m.replaceAll("");
}
return dest;
}
}