ApplicationManagerオブジェクトをPackageManagerから取得する方法はありますか?私はこれを達成するために多くの異なるタイプのメソッドを試しましたが、無駄です。私は現在、デフォルトのアンドロイドランチャー画面(Application Drawer)で作業しており、パッケージ名からパッケージ情報を取得したいと考えています。アプリケーション層ではではなくではありませんが、Launcher2アプリケーションのビルド層ではソースです。私がやっているアンドロイドのバージョンは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
を。これは、現在のパッケージの実行を取得するためのものではなく、携帯電話自体上のすべてのアプリケーションここで
は、私がしようとしているものです。私はプルしようとしています
public void addApps(ArrayList<ApplicationInfo> list)
:にApplicationInfoはAllApps2D.javaで以下の関数に渡されるよう
pack.getApplicationInfo(packageName, flags)
が同じにApplicationInfoオブジェクトを返しません:
は私がことがわかりました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経由で取得できるのが理想的です。
com.android.Launcher2.ApplicationInfo
です:私が動作するように実装したものにするためには
、私は明らかにされAllApps2Dコードが使用されていることをSAME にApplicationInfoオブジェクトを、引くことができなければなりません
ApplicationInfo item = pack.getApplicationInfo(package_list.get(i), PackageManager.GET_ACTIVITIES);
である:
012で返されるものと同じではありません android.content.pm.ApplicationInfo
ランチャーに利用可能なコード、そして私が働いているクラスがhere発見されました。
WITHINアンドロイドビルド内のランチャー2アプリケーションはありません。他の提案はありますか?
既に試したところ、Launcher2アプリケーションでは同じオブジェクトではなく、キャストできません。 – JoxTraex
他の提案はありますか?私はこだわっていて、これをどう対処するか分からない。 – JoxTraex
これは絶対に同じオブジェクトです。多分、Launcher2にはApplicationInfoという独自のクラスがあります。もしそうなら...そうですね、使ってはいけません。プラットフォームのandroid.content.pm.ApplicationInfoが明示的に重要な私のコードを使用してください。 – hackbod