如何以编程方式获取安装在Android中的游戏列表

时间:2012-12-02 10:34:13

标签: java android

在我的项目中,我可以通过以下代码获取所有已安装应用程序的列表:

public class ApplicationFilterActivity extends Activity implements
        OnItemClickListener {


    ListView appfilter;
    SharedPreferences preferences;
    public static String filenames = "RotateData";
PackageManager pck;
    ArrayList<Applications> results = new ArrayList<Applications>();
    ArrayList<String> gotPackagename = new ArrayList<String>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        appfilter = (ListView) findViewById(R.id.lvApp);
        preferences = getSharedPreferences(filenames, 0);
        PackageManager packageManager = this.getPackageManager();
        List<PackageInfo> applist = packageManager.getInstalledPackages(0);
        Iterator<PackageInfo> it = applist.iterator();
        while (it.hasNext()) {
            PackageInfo pk = (PackageInfo) it.next();
            results.add(new Applications(pk.applicationInfo
                    .loadIcon(packageManager), ""
                    + pk.applicationInfo.loadLabel(packageManager)));
            Log.i("AppName", "" + pk.applicationInfo.packageName);
            gotPackagename.add(pk.applicationInfo.packageName);


        }



        appfilter.setAdapter(new Customarrayadapter(this, results));
        appfilter.setOnItemClickListener(this);

    }
}

但现在我想过滤该列表只显示游戏,是否可能?

3 个答案:

答案 0 :(得分:3)

无法在Android中将您的应用设置为“游戏类型”,因此您无法按类别过滤应用。

我认为,最佳解决方案 - 解析Google Play中的所有游戏包(因电话本地化而导致游戏名称可能不同),并将该列表放入应用中,有时会从服务器更新。如果您的应用程序中始终有Internet连接,您可以将找到的应用程序列表发送到服务器,服务器将返回该列表中的游戏。所以,你需要为此编写服务器代码。

答案 1 :(得分:0)

不,不可能。 类别仅适用于市场应用程序没有任何标识符来区分应用程序类别。

答案 2 :(得分:0)

您可以获取设备上安装的每个应用的包名称,并抓取google play商店以查看该应用是否属于其中一个游戏类别。但这有点像hackish :)。