Java Android首选项应用程序列表

Java Android首选项应用程序列表,java,android,android-preferences,Java,Android,Android Preferences,是否有办法在首选项中显示已安装应用程序的列表 我正在制作一个应用程序,通过Intent启动其他应用程序: PackageManager pm = getApplicationContext().getPackageManager(); Intent appStartIntent = pm.getLaunchIntentForPackage("NAME OF THE PACKAGE"); if (null != appStartIntent) { getApplicat

是否有办法在首选项中显示已安装应用程序的列表

我正在制作一个应用程序,通过Intent启动其他应用程序:

 PackageManager pm = getApplicationContext().getPackageManager();
 Intent appStartIntent = pm.getLaunchIntentForPackage("NAME OF THE PACKAGE");
 if (null != appStartIntent) { 
          getApplicationContext().startActivity(appStartIntent);
 }
我需要一种方法从
ListPreference
获取软件包的名称,最好是一个
ListPreference
,其中包含所有已安装应用程序的名称和图标


这是怎么可能的?

不管怎样,我用一个定制的适配器使它工作了,感谢互联网上的一些示例代码。

代码如下:

自定义列表首选项:

import java.util.List;

import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.preference.ListPreference;
import android.util.AttributeSet;

public class ApplicationSelector extends ListPreference
{
    private Context contexte;
    
    public ApplicationSelector(Context context, AttributeSet attrs) {
        super(context, attrs);
        contexte=context;
    }

    @Override
    protected void onPrepareDialogBuilder(Builder builder) {
        int index = findIndexOfValue(getSharedPreferences().getString(
                getKey(), "1"));

        AppliAdaptateur adapter = new AppliAdaptateur(contexte, this.getInstalledApplication(contexte), contexte.getPackageManager());

        builder.setAdapter(adapter, this);
        super.onPrepareDialogBuilder(builder);
    }
    
    
    public static List<ApplicationInfo> getInstalledApplication(Context c) {
        return c.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
    }
    
    
}
在preference.xml中:

<YOURPACKAGE.ApplicationSelector
            android:defaultValue="Rien"
            android:dependency="cbmain2"
            android:entries="@array/listeChoix"
            android:entryValues="@array/listeChoix"
            android:key="pref22"
            android:summary="Selection de l\&apos;action à effectuer"
            android:title="Application" />

我希望它能帮助你


关于

没关系,我使用了一个定制的适配器,感谢互联网上的一些示例代码。

代码如下:

自定义列表首选项:

import java.util.List;

import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.preference.ListPreference;
import android.util.AttributeSet;

public class ApplicationSelector extends ListPreference
{
    private Context contexte;
    
    public ApplicationSelector(Context context, AttributeSet attrs) {
        super(context, attrs);
        contexte=context;
    }

    @Override
    protected void onPrepareDialogBuilder(Builder builder) {
        int index = findIndexOfValue(getSharedPreferences().getString(
                getKey(), "1"));

        AppliAdaptateur adapter = new AppliAdaptateur(contexte, this.getInstalledApplication(contexte), contexte.getPackageManager());

        builder.setAdapter(adapter, this);
        super.onPrepareDialogBuilder(builder);
    }
    
    
    public static List<ApplicationInfo> getInstalledApplication(Context c) {
        return c.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
    }
    
    
}
在preference.xml中:

<YOURPACKAGE.ApplicationSelector
            android:defaultValue="Rien"
            android:dependency="cbmain2"
            android:entries="@array/listeChoix"
            android:entryValues="@array/listeChoix"
            android:key="pref22"
            android:summary="Selection de l\&apos;action à effectuer"
            android:title="Application" />

我希望它能帮助你

问候