【Android】携帯電話にインストールされているapkファイル情報(PackageInfo、ResolveInfo)(アプリケーション画像、アプリケーション名、パッケージ名など)を取得する
5551 ワード
ご存知のように、PackageManagerでは、携帯電話側にインストールされているapkファイルの情報を入手できます.具体的なコードは以下の通りです.
以上の方法により、携帯電話にインストールされているすべてのアプリケーションを得ることができ、手動でインストールされたapkパッケージの情報も含まれ、システムにプリインストールされたアプリケーションの情報も含まれている.この2つのソフトウェアを区別するには、以下の方法を使用することができる.
a.packageInfoListから取得するpackageInfoは、packageInfoを経由する.アプリケーションInfoはアプリケーションInfoを取得します.
b.判定(アプリケーションInfo.flags&ApplicationInfo.FLAG_SYSTEM)の値が0より大きい場合は、取得したアプリケーションがシステムプリインストールのアプリケーションであり、逆に手動インストールのアプリケーションであることを示す.
コードを見て、説明はコメントに書かれています.
アプリケーションのコードを取得するには、次の手順に従います.
画像、アプリケーション名、パッケージ名を取得します.
ShareItemInfoクラスはローカルでカスタマイズされていますので、無視してください.
また、共有アプリのリストを探している人もいるかもしれませんが、ここで一緒に話しましょう.
共有をサポートするアプリケーションのコードを取得します.
このメソッドのため、PackageInfoオブジェクトは返されません.ResolveInfoですしたがって、画像、アプリケーション名、パッケージ名を取得する方法は異なります.以下のようにします.
まとめ:
PackageInfoで詳細情報を取得する方法:
パッケージ名の取得方法:
icon取得方法:
アプリケーション名の取得方法:
アクセス権の取得方法を使用するには、次の手順に従います.
ResolveInfoによる詳細情報の取得方法:
パッケージ名の取得方法:
icon取得方法:
アプリケーション名の取得方法:
転載:http://www.cnblogs.com/feng88724/archive/2011/02/21/1961222.html
PackageManager packageManager = this.getPackageManager();
List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);
以上の方法により、携帯電話にインストールされているすべてのアプリケーションを得ることができ、手動でインストールされたapkパッケージの情報も含まれ、システムにプリインストールされたアプリケーションの情報も含まれている.この2つのソフトウェアを区別するには、以下の方法を使用することができる.
a.packageInfoListから取得するpackageInfoは、packageInfoを経由する.アプリケーションInfoはアプリケーションInfoを取得します.
b.判定(アプリケーションInfo.flags&ApplicationInfo.FLAG_SYSTEM)の値が0より大きい場合は、取得したアプリケーションがシステムプリインストールのアプリケーションであり、逆に手動インストールのアプリケーションであることを示す.
コードを見て、説明はコメントに書かれています.
アプリケーションのコードを取得するには、次の手順に従います.
/**
*
* @param context
* @return
*/
public static List<PackageInfo> getAllApps(Context context) {
List<PackageInfo> apps = new ArrayList<PackageInfo>();
PackageManager pManager = context.getPackageManager();
//
List<PackageInfo> paklist = pManager.getInstalledPackages(0);
for (int i = 0; i < paklist.size(); i++) {
PackageInfo pak = (PackageInfo) paklist.get(i);
//
if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {
// customs applications
apps.add(pak);
}
}
return apps;
}
画像、アプリケーション名、パッケージ名を取得します.
PackageManager pManager = MessageSendActivity.this.getPackageManager();
List<PackageInfo> appList = Utils.getAllApps(MessageSendActivity.this);
for(int i=0;i<appList.size();i++) {
PackageInfo pinfo = appList.get(i);
ShareItemInfo shareItem = new ShareItemInfo();
//set Icon
shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo));
//set Application Name
shareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString());
//set Package Name
shareItem.setPackageName(pinfo.applicationInfo.packageName);
}
ShareItemInfoクラスはローカルでカスタマイズされていますので、無視してください.
また、共有アプリのリストを探している人もいるかもしれませんが、ここで一緒に話しましょう.
共有をサポートするアプリケーションのコードを取得します.
/**
*
* @param context
* @return
*/
public static List<ResolveInfo> getShareApps(Context context){
List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();
Intent intent=new Intent(Intent.ACTION_SEND,null);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("text/plain");
PackageManager pManager = context.getPackageManager();
mApps = pManager.queryIntentActivities(intent,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
return mApps;
}
このメソッドのため、PackageInfoオブジェクトは返されません.ResolveInfoですしたがって、画像、アプリケーション名、パッケージ名を取得する方法は異なります.以下のようにします.
PackageManager pManager = MessageSendActivity.this.getPackageManager();
/********************* *********************/
List<ResolveInfo> resolveList = Utils.getShareApps(MessageSendActivity.this);
for(int i=0;i<resolveList.size();i++) {
ResolveInfo resolve = resolveList.get(i);
ShareItemInfo shareItem = new ShareItemInfo();
//set Icon
shareItem.setIcon(resolve.loadIcon(pManager));
//set Application Name
shareItem.setLabel(resolve.loadLabel(pManager).toString());
//set Package Name
shareItem.setPackageName(resolve.activityInfo.packageName);
}
まとめ:
PackageInfoで詳細情報を取得する方法:
パッケージ名の取得方法:
packageInfo.packageName
icon取得方法:
packageManager.getApplicationIcon(applicationInfo)
アプリケーション名の取得方法:
packageManager.getApplicationLabel(applicationInfo)
アクセス権の取得方法を使用するには、次の手順に従います.
packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions
ResolveInfoによる詳細情報の取得方法:
パッケージ名の取得方法:
resolve.activityInfo.packageName
icon取得方法:
resolve.loadIcon(packageManager)
アプリケーション名の取得方法:
resolve.loadLabel(packageManager).toString()
転載:http://www.cnblogs.com/feng88724/archive/2011/02/21/1961222.html