有什麼辦法從PackageManager中取出ApplicationInfo對象?我嘗試了許多不同類型的方法來實現這一點,但無濟於事。我目前正在使用默認的android啓動器屏幕(應用程序抽屜),並希望從軟件包名稱中獲取軟件包信息。在應用程序層,這是而不是,但是在Launcher2應用程序的源代碼構建層。我正在使用的android版本是2.3.3。從包管理器中檢索應用程序信息
這是我曾嘗試:
ApplicationInfo item = pack.getApplicationInfo(package_list.get(i), PackageManager.GET_ACTIVITIES);
錯誤:
Type mismatch: cannot convert from android.content.pm.ApplicationInfo to com.android.launcher2.ApplicationInfo
這不是檢索當前包運行,但手機本身的所有應用程序。
我發現:
pack.getApplicationInfo(packageName, flags)
不返回相同的ApplicationInfo對象作爲ApplicationInfo傳遞到下面的功能在AllApps2D.java:
public void addApps(ArrayList<ApplicationInfo> list)
我試圖拉包名中的ApplicationInfo對象只有名稱。
有問題的功能如下,如AllApps2D.java的開放源代碼(文件夾的launcher2)
private ArrayList<ApplicationInfo> mAllAppsList = new ArrayList<ApplicationInfo>();
public void addApps(ArrayList<ApplicationInfo> list) {
final int N = list.size();
for (int i=0; i<N; i++) {
final ApplicationInfo item = list.get(i);
int index = Collections.binarySearch(mAllAppsList, item,
LauncherModel.APP_NAME_COMPARATOR);
if (index < 0) {
index = -(index+1);
}
mAllAppsList.add(index, item);
}
mAppsAdapter.notifyDataSetChanged();
}
UPDATE發現
基本上我想要做的是重新排序用自定義順序在啓動器中安排圖標。如果我可以通過PackageManager檢索必要的信息,那將是理想的。
爲了什麼,我已經實現了工作,我必須能夠拉SAME ApplicationInfo對象的AllApps2D代碼使用,這顯然是:這是
com.android.Launcher2.ApplicationInfo
不一樣的是什麼返回:
ApplicationInfo item = pack.getApplicationInfo(package_list.get(i), PackageManager.GET_ACTIVITIES);
是:
android.content.pm.ApplicationInfo
可用於發射的代碼,和我一起工作的類中找到here。
這些技術都不起作用WITHIN android構建中的launcher2應用程序。還有其他建議嗎?
已經嘗試過這種方式,它們在Launcher2應用程序中不是同一個對象,您不能施放它們。 – JoxTraex
有沒有其他建議?我有點卡住,不知道如何處理。 – JoxTraex
他們絕對是同一個對象。也許Launcher2有它自己的名爲ApplicationInfo的類。如果是這樣的話,請不要使用它。使用我的代碼,這對平臺的android.content.pm.ApplicationInfo非常重要。 – hackbod