2011-11-12 77 views
1

我試圖找到一些關於應用程序的信息,我發現使用shell的top命令。我所擁有的是一個進程名稱(包含包名稱)。圖標和應用名稱將是完美的。我無法通過谷歌找到任何合適的靈魂提示。任何幫助將被提升;)基於它的進程名稱的Android應用程序信息

爲了搶佔先機,我使用top,因爲這是我發現顯示當前處理器使用情況的唯一方式。如果有人熟悉更多API友善靈魂,我會很感激。

示例流程名字,我得到的是:

  • com.android.deskclock桌面時鐘
  • com.creativemobile.DragRacing遊戲飆車

回答

4

在這裏你如何得到細節。由於您擁有軟件包名稱,因此可以使用它來獲取相應的應用程序名稱,版本和圖標。

List<PackageInfo> packagess = getPackageManager().getInstalledPackages(0); 
for(int i=0;i<packagess.size();i++) { 
    PackageInfo pack = packagess.get(i); 
    if ((!getSysPackages) && (pack.versionName == null)) { 
     continue ; 
    } 

    //this is the application name 
    pack.applicationInfo.loadLabel(getPackageManager()).toString(); 

    //this is the package name 
    pack.packageName; 

    //this is the version name 
    pack.versionName; 

    //this is the version code 
    pack.versionCode; 

    //this is the application icon 
    pack.applicationInfo.loadIcon(getPackageManager()); 
} 
+0

爲了確保我能正確理解你,這個想法是循環遍歷已安裝的軟件包,尋找我從'top'命令獲得的軟件包,對不對?聽起來很美味,我會在下午檢查一下,下班後;) – Moyshe

+0

@Moyshe是啊。你可以將它們保存在一個HashMap或任何你想要的。 –

+0

它工作!非常感謝你! Ale這些學分是屬於你的;) – Moyshe

0

你可以嘗試下面的代碼:

private String getTopActivity() { 

     ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
     List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager.getRunningTasks(1); 
     ActivityManager.RunningTaskInfo ar = RunningTask.get(30); 
     return ar.topActivity.getClassName().toString(); 
    } 

你必須在AndroidManifes中授予獲取任務的權限t.xml

+0

這是我的第二個問題的答案,對嗎?因爲它提供了類名而不是應用程序名。不幸的是,我發現它同樣沒有用作我的過程名稱。而且,如果這是對我的第二個問題的回答,那麼處理器統計信息可以在哪裏找到?或者我可能在這裏錯過了一些東西?也許我不明白你的觀點? – Moyshe

相關問題