Ejemplo n.º 1
0
  /**
   * get information for process
   *
   * @return true == success, false == failed
   */
  public boolean getCacheInfo() {

    if (queryQueue.isEmpty()) return false;

    try {
      queryQueueLock.acquire();
    } catch (InterruptedException e) {
      return false;
    }

    QueueJob processJob = queryQueue.remove();
    queryQueueLock.release();

    PackageInfo curPackageInfo = null;
    String curPackageName = null;
    if (processJob.process.contains(":"))
      curPackageName = processJob.process.substring(0, processJob.process.indexOf(":"));
    else curPackageName = processJob.process;

    // for system user
    if (processJob.owner.contains("system")
        && processJob.process.contains("system")
        && !processJob.process.contains(".")) curPackageName = "android";

    try {
      curPackageInfo = packageMgr.getPackageInfo(curPackageName, 0);
    } catch (NameNotFoundException e) {
    }

    if (curPackageInfo == null && processJob.uid > 0) {
      String[] subPackageName = packageMgr.getPackagesForUid(processJob.uid);

      if (subPackageName != null) {
        for (int PackagePtr = 0; PackagePtr < subPackageName.length; PackagePtr++) {
          if (subPackageName[PackagePtr] == null) continue;
          try {
            curPackageInfo = packageMgr.getPackageInfo(subPackageName[PackagePtr], 0);
            PackagePtr = subPackageName.length;
          } catch (NameNotFoundException e) {
          }
        }
      }
    }

    CacheItem processItem = new CacheItem();

    if (curPackageInfo != null) {
      processItem.name = curPackageInfo.applicationInfo.loadLabel(packageMgr).toString();
      if (useDetail == true)
        processItem.icon =
            resizeImage(curPackageInfo.applicationInfo.loadIcon(packageMgr), iconSize);
    } else {
      processItem.name = curPackageName;
      processItem.icon = commonIcon;
    }

    cacheStorage.put(processJob.process, processItem);

    return true;
  }
Ejemplo n.º 2
0
  public void doCacheInfo(int uid, String owner, String process) {
    // add a job into work queue
    try {
      queryQueueLock.acquire();
    } catch (InterruptedException e) {
      return;
    }

    queryQueue.add(new QueueJob(uid, owner, process));
    queryQueueLock.release();

    // create a skeleton object
    CacheItem skeletonItem = new CacheItem();
    skeletonItem.name = process;
    skeletonItem.icon = commonIcon;
    cacheStorage.put(process, skeletonItem);

    return;
  }