0

id(パッケージ名)や表示名の一部でフィルタリングされたリストアプリを含む動的フォルダーと呼ばれるものを作成したいと思います。

だから私はあなたが連絡先に使用できるようなものが必要です:

Cursor contacts = managedQuery(ContactsContract.Contacts.CONTENT_URI,
                    new String[]{
                        ContactsContract.Contacts.DISPLAY_NAME,
                        ContactsContract.Contacts._ID
                    },
                    ContactsContract.Contacts.HAS_PHONE_NUMBER + "='1'"
                    , null, null)

しかし、アプリを一覧表示するためのクエリが必要です。

リストから選択したときにアプリケーションを実行する方法も必要です。

4

1 に答える 1

1

あなたは次のようなものを書くことができます:

    PackageManager pm = this.getPackageManager();

    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

    List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);
    Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm));

    int found = -1;
    for (int i = 0; i < appList.size(); i++) {
        String pack = appList.get(i).activityInfo.applicationInfo.packageName;
        if (pack.equals("com.mypackage")) // Your custom criteria comes here...
            found = i;
    }
    // Launch found application
            Intent intent = new Intent();
        intent.setAction(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        intent.setComponent(new ComponentName(appList.get(found).activityInfo.applicationInfo.packageName, appList
                .get(found).activityInfo.name));
        startActivity(intent);
于 2013-01-18T23:32:29.280 に答える