2016-06-23 9 views
3

アプリの画面にのみ表示されているすべてのパッケージを取得する方法:それが正常に動作します私は、すべてのインストールのapkを取得しようとしました

public ArrayList<InfoObject> getInstalledApps(boolean getSysPackages) { 
    ArrayList<InfoObject> res = new ArrayList<InfoObject>(); 
    List<PackageInfo> packs = mContext.getPackageManager().getInstalledPackages(0); 
    for(int i=0;i<packs.size();i++) { 
     PackageInfo p = packs.get(i); 

     Log.v("PACKAGE GET","" +p.packageName + "flags => " + p.applicationInfo.flags); 
     /* if ((p.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { 
      continue ; 
     }*/ 
     InfoObject newInfo = new InfoObject(); 
     newInfo.appname = p.applicationInfo.loadLabel(mContext.getPackageManager()).toString(); 
     newInfo.pname = p.packageName; 
     newInfo.versionName = p.versionName; 
     newInfo.versionCode = p.versionCode; 
     newInfo.icon = p.applicationInfo.loadIcon(mContext.getPackageManager()); 
     res.add(newInfo); 
    } 
    return res; 
} 

!! ApplicationInfo.FLAG_SYSTEMと

しかしApplicationInfo.FLAG_SYSTEMせずに、私は私のインストールAPK(フェイスブック、スカイプ)を表示

、私はすべてのAPK(フェイスブック、スカイプ)と、すべてのシステムのAPKを示しました。

私の問題は、システムapkからアプリケーションのみをフィルタリングする方法が私のアプリケーションメニューに存在するということです。例えば

:私はアルバムのカメラのFacebook ... とノーdevicemonitor、InputDevicesを得るために必要 、メモワールはここ

おかげ

答えて

0

私の質問への答えをアプリ:)

私達ができますgetLaunchIntentForPackageによってすべてのアプリケーションを取得します。これは、パッケージ内のフロントドアのアクティビティを起動するための良い意図を返します。

(mContext.getPackageManager()。getLaunchIntentForPackage(p.packageName)!= null)の

おかげ

場合
関連する問題

 関連する問題