Java 如何查找以特定字母表开头的应用程序?-安卓启动器

Java 如何查找以特定字母表开头的应用程序?-安卓启动器,java,android,launcher,package-managers,android-launcher,Java,Android,Launcher,Package Managers,Android Launcher,我正在为android制作一个启动器,其中有一个功能,用户可以选择一个字母表,然后显示以该字母表开头的应用程序。 我有一个类,它存储应用程序的名称、图标等,并可以使用GridView成功地显示它。但我似乎不知道如何只显示以选定字母表开头的选定应用程序 MainActivity/Dashboard.java public class Dashboard extends Activity { DrawerAdapter drawerAdapterObject; GridView drawerGri

我正在为android制作一个启动器,其中有一个功能,用户可以选择一个字母表,然后显示以该字母表开头的应用程序。 我有一个类,它存储应用程序的名称、图标等,并可以使用GridView成功地显示它。但我似乎不知道如何只显示以选定字母表开头的选定应用程序

MainActivity/Dashboard.java

public class Dashboard extends Activity {

DrawerAdapter drawerAdapterObject;
GridView drawerGrid;

class Pac {
    Drawable icon;
    String name;
    String label;
}

Pac[] pacs;
PackageManager pm;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dashboard);

    drawerGrid = (GridView) findViewById(R.id.content);
    pm = getPackageManager();
    set_pacs();

    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_PACKAGE_ADDED);
    filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
    filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
    filter.addDataScheme("package");
    registerReceiver(new PacReciever(), filter);
}

public void set_pacs() {
    final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    mainIntent.hasExtra("facebok");
    List<ResolveInfo> pacsList = pm.queryIntentActivities(mainIntent, 0);
    pacs = new Pac[pacsList.size()];
    for(int i = 0; i < pacsList.size(); i++) {
        pacs[i] = new Pac();
        pacs[i].icon = pacsList.get(i).loadIcon(pm);
        pacs[i].name = pacsList.get(i).activityInfo.packageName;
        pacs[i].label = pacsList.get(i).loadLabel(pm).toString();
    }
    new SortApps().exchage_sort(pacs);

    drawerAdapterObject = new DrawerAdapter(this, pacs);
    drawerGrid.setAdapter(drawerAdapterObject);
    drawerGrid.setOnItemClickListener(new DrawerClickListner(this, pacs, pm));
}

public class PacReciever extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        set_pacs();
    }
}

public void test(){
    Intent test = new Intent(this,MainActivity.class);
    startActivity(test);
}
}
public class DrawerAdapter extends BaseAdapter {

Context mContext;
Dashboard.Pac[] pacsForAdapter;

public DrawerAdapter(Context c, Dashboard.Pac pacs[]) {
    mContext = c;
    pacsForAdapter = pacs;
}

@Override
public int getCount() {
    return pacsForAdapter.length;
}

@Override
public Object getItem(int i) {
    return null;
}

@Override
public long getItemId(int i) {
    return 0;
}

static class ViewHolder {
    TextView text;
    ImageView icon;
}

@Override
public View getView(int pos, View convertView, ViewGroup viewGroup) {

    ViewHolder viewHolder;
    LayoutInflater li = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if(convertView == null) {
        convertView = li.inflate(R.layout.drawer_item, null);
        viewHolder = new ViewHolder();
        viewHolder.text = (TextView) convertView.findViewById(R.id.icon_text);
        viewHolder.icon = (ImageView) convertView.findViewById(R.id.icon_image);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    viewHolder.icon.setImageDrawable(pacsForAdapter[pos].icon);
    viewHolder.text.setText(pacsForAdapter[pos].label);
    return convertView;
}
}
public class DrawerClickListner implements OnItemClickListener {

Context mContext;
Dashboard.Pac[] pacsForAdapter;
PackageManager pmForListner;

public DrawerClickListner(Context c, Dashboard.Pac[] pacs, PackageManager pm) {

    mContext = c;
    pacsForAdapter = pacs;
    pmForListner = pm;
}

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {

    Intent launchIntent =     pmForListner.getLaunchIntentForPackage(pacsForAdapter[pos].name);
    mContext.startActivity(launchIntent);
}
}
public class SortApps {
public void exchage_sort(Dashboard.Pac[] pacs){
    int i,j;
    Dashboard.Pac temp;

    for(i = 0; i < pacs.length; i++) {
        for(j = i + 1; j < pacs.length; j++) {
            if(pacs[i].label.compareToIgnoreCase(pacs[j].label) > 0) {
                temp = pacs[i];
                pacs[i] = pacs[j];
                pacs[j] = temp;
            }
        }
    }
}
}
DrawerClickListner.java

public class Dashboard extends Activity {

DrawerAdapter drawerAdapterObject;
GridView drawerGrid;

class Pac {
    Drawable icon;
    String name;
    String label;
}

Pac[] pacs;
PackageManager pm;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dashboard);

    drawerGrid = (GridView) findViewById(R.id.content);
    pm = getPackageManager();
    set_pacs();

    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_PACKAGE_ADDED);
    filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
    filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
    filter.addDataScheme("package");
    registerReceiver(new PacReciever(), filter);
}

public void set_pacs() {
    final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    mainIntent.hasExtra("facebok");
    List<ResolveInfo> pacsList = pm.queryIntentActivities(mainIntent, 0);
    pacs = new Pac[pacsList.size()];
    for(int i = 0; i < pacsList.size(); i++) {
        pacs[i] = new Pac();
        pacs[i].icon = pacsList.get(i).loadIcon(pm);
        pacs[i].name = pacsList.get(i).activityInfo.packageName;
        pacs[i].label = pacsList.get(i).loadLabel(pm).toString();
    }
    new SortApps().exchage_sort(pacs);

    drawerAdapterObject = new DrawerAdapter(this, pacs);
    drawerGrid.setAdapter(drawerAdapterObject);
    drawerGrid.setOnItemClickListener(new DrawerClickListner(this, pacs, pm));
}

public class PacReciever extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        set_pacs();
    }
}

public void test(){
    Intent test = new Intent(this,MainActivity.class);
    startActivity(test);
}
}
public class DrawerAdapter extends BaseAdapter {

Context mContext;
Dashboard.Pac[] pacsForAdapter;

public DrawerAdapter(Context c, Dashboard.Pac pacs[]) {
    mContext = c;
    pacsForAdapter = pacs;
}

@Override
public int getCount() {
    return pacsForAdapter.length;
}

@Override
public Object getItem(int i) {
    return null;
}

@Override
public long getItemId(int i) {
    return 0;
}

static class ViewHolder {
    TextView text;
    ImageView icon;
}

@Override
public View getView(int pos, View convertView, ViewGroup viewGroup) {

    ViewHolder viewHolder;
    LayoutInflater li = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if(convertView == null) {
        convertView = li.inflate(R.layout.drawer_item, null);
        viewHolder = new ViewHolder();
        viewHolder.text = (TextView) convertView.findViewById(R.id.icon_text);
        viewHolder.icon = (ImageView) convertView.findViewById(R.id.icon_image);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    viewHolder.icon.setImageDrawable(pacsForAdapter[pos].icon);
    viewHolder.text.setText(pacsForAdapter[pos].label);
    return convertView;
}
}
public class DrawerClickListner implements OnItemClickListener {

Context mContext;
Dashboard.Pac[] pacsForAdapter;
PackageManager pmForListner;

public DrawerClickListner(Context c, Dashboard.Pac[] pacs, PackageManager pm) {

    mContext = c;
    pacsForAdapter = pacs;
    pmForListner = pm;
}

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {

    Intent launchIntent =     pmForListner.getLaunchIntentForPackage(pacsForAdapter[pos].name);
    mContext.startActivity(launchIntent);
}
}
public class SortApps {
public void exchage_sort(Dashboard.Pac[] pacs){
    int i,j;
    Dashboard.Pac temp;

    for(i = 0; i < pacs.length; i++) {
        for(j = i + 1; j < pacs.length; j++) {
            if(pacs[i].label.compareToIgnoreCase(pacs[j].label) > 0) {
                temp = pacs[i];
                pacs[i] = pacs[j];
                pacs[j] = temp;
            }
        }
    }
}
}
public类DrawerClickListner实现了一个新的监听器{
语境;
Dashboard.Pac[]pacsforapter;
包装经理pmForListner;
公共抽屉列表器(上下文c,Dashboard.Pac[]pacs,PackageManager pm){
mContext=c;
pacsfradapter=pacs;
pmForListner=pm;
}
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
Intent launchIntent=pmForListner.getLaunchIntentForPackage(pacsfradapter[pos].name);
mContext.startActivity(launchIntent);
}
}
SortApps.java

public class Dashboard extends Activity {

DrawerAdapter drawerAdapterObject;
GridView drawerGrid;

class Pac {
    Drawable icon;
    String name;
    String label;
}

Pac[] pacs;
PackageManager pm;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dashboard);

    drawerGrid = (GridView) findViewById(R.id.content);
    pm = getPackageManager();
    set_pacs();

    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_PACKAGE_ADDED);
    filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
    filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
    filter.addDataScheme("package");
    registerReceiver(new PacReciever(), filter);
}

public void set_pacs() {
    final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    mainIntent.hasExtra("facebok");
    List<ResolveInfo> pacsList = pm.queryIntentActivities(mainIntent, 0);
    pacs = new Pac[pacsList.size()];
    for(int i = 0; i < pacsList.size(); i++) {
        pacs[i] = new Pac();
        pacs[i].icon = pacsList.get(i).loadIcon(pm);
        pacs[i].name = pacsList.get(i).activityInfo.packageName;
        pacs[i].label = pacsList.get(i).loadLabel(pm).toString();
    }
    new SortApps().exchage_sort(pacs);

    drawerAdapterObject = new DrawerAdapter(this, pacs);
    drawerGrid.setAdapter(drawerAdapterObject);
    drawerGrid.setOnItemClickListener(new DrawerClickListner(this, pacs, pm));
}

public class PacReciever extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        set_pacs();
    }
}

public void test(){
    Intent test = new Intent(this,MainActivity.class);
    startActivity(test);
}
}
public class DrawerAdapter extends BaseAdapter {

Context mContext;
Dashboard.Pac[] pacsForAdapter;

public DrawerAdapter(Context c, Dashboard.Pac pacs[]) {
    mContext = c;
    pacsForAdapter = pacs;
}

@Override
public int getCount() {
    return pacsForAdapter.length;
}

@Override
public Object getItem(int i) {
    return null;
}

@Override
public long getItemId(int i) {
    return 0;
}

static class ViewHolder {
    TextView text;
    ImageView icon;
}

@Override
public View getView(int pos, View convertView, ViewGroup viewGroup) {

    ViewHolder viewHolder;
    LayoutInflater li = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if(convertView == null) {
        convertView = li.inflate(R.layout.drawer_item, null);
        viewHolder = new ViewHolder();
        viewHolder.text = (TextView) convertView.findViewById(R.id.icon_text);
        viewHolder.icon = (ImageView) convertView.findViewById(R.id.icon_image);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    viewHolder.icon.setImageDrawable(pacsForAdapter[pos].icon);
    viewHolder.text.setText(pacsForAdapter[pos].label);
    return convertView;
}
}
public class DrawerClickListner implements OnItemClickListener {

Context mContext;
Dashboard.Pac[] pacsForAdapter;
PackageManager pmForListner;

public DrawerClickListner(Context c, Dashboard.Pac[] pacs, PackageManager pm) {

    mContext = c;
    pacsForAdapter = pacs;
    pmForListner = pm;
}

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {

    Intent launchIntent =     pmForListner.getLaunchIntentForPackage(pacsForAdapter[pos].name);
    mContext.startActivity(launchIntent);
}
}
public class SortApps {
public void exchage_sort(Dashboard.Pac[] pacs){
    int i,j;
    Dashboard.Pac temp;

    for(i = 0; i < pacs.length; i++) {
        for(j = i + 1; j < pacs.length; j++) {
            if(pacs[i].label.compareToIgnoreCase(pacs[j].label) > 0) {
                temp = pacs[i];
                pacs[i] = pacs[j];
                pacs[j] = temp;
            }
        }
    }
}
}
公共类sortaps{
公共无效交换排序(Dashboard.Pac[]pacs){
int i,j;
仪表板。Pac温度;
对于(i=0;i0){
温度=pacs[i];
pacs[i]=pacs[j];
pacs[j]=温度;
}
}
}
}
}
drawer\u item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_dashboard"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.zyconut.socio.Dashboard">

<SlidingDrawer
    android:id="@+id/drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:handle="@+id/handle"
    android:content="@+id/content"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <ImageView
        android:id="@+id/handle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@mipmap/ic_launcher"/>

    <GridView
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorPrimarytrans"
        android:columnWidth="90dp"
        android:numColumns="auto_fit"
        android:verticalSpacing="50dp"
        android:horizontalSpacing="50dp"/>

</SlidingDrawer>

</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal">

<ImageView
    android:id="@+id/icon_image"
    android:layout_width="65dp"
    android:layout_height="65dp"
    android:padding="3dp"/>

<TextView
    android:id="@+id/icon_text"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:maxLines="2"
    android:gravity="center_horizontal"/>

</LinearLayout>

这是我的第一篇帖子,请原谅我的错误

我只需要有人告诉我如何显示仅以A开头的应用程序。剩下的我也许能弄明白


提前感谢

您可以使用以下代码片段获取已安装应用程序的列表

List<String> installedApps = new ArrayList<String>();
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
for(int i=0;i<packs.size();i++) {
    PackageInfo p = packs.get(i);

    String appName = p.applicationInfo.loadLabel(getPackageManager()).toString();
    installedApps.add(appName);
}
List installedApps=new ArrayList();
列表包=getPackageManager()。getInstalledPackages(0);

对于(int i=0;ium.im a noob.那么你能解释一下我如何将它链接到gridview吗?我向你展示了如何在字符串列表中获取应用程序名称列表。你所需要做的就是将其添加到你的
Pac
数组中,你将其传递给你的适配器。我正在传递一个包含图标和列表的类。那么我如何修改adapt呃,如果名称以a开头,我可以设置应用程序,如果不跳到下一个或其他什么。真的很抱歉打扰你,我已经连续搜索了12个小时,无法解决我的问题。请帮助^_^