2012-02-13 6 views
0

設定したアプリケーションのリストを表示する方法はありますか?Androidの設定のアプリケーションリスト

私はテントを経由して他のアプリケーションを起動するアプリケーション作っている:私はListPreferenceからパッケージの名前を取得する方法が必要

PackageManager pm = getApplicationContext().getPackageManager(); 
Intent appStartIntent = pm.getLaunchIntentForPackage("NAME OF THE PACKAGE"); 
if (null != appStartIntent) { 
      getApplicationContext().startActivity(appStartIntent); 
} 

を、最高のは、すべての名前を含むListPreferenceだろうアイコンでインストールされたアプリケーション

どうすれば可能ですか?

答えて

5

私はそれをカスタムアダプターを使って動作させました。インターネット上のサンプルコードに感謝します。 (http://blog.isys-labs.com/creating-a-custom-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); 
    } 


} 

カスタムAdaptator:

import java.util.List; 

import android.content.Context; 
import android.content.pm.ApplicationInfo; 
import android.content.pm.PackageManager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.plop.R; 

public class AppliAdaptateur extends BaseAdapter { 
    private Context mContext; 
    private List mListAppInfo; 
    private PackageManager mPackManager; 

    public AppliAdaptateur(Context c, List list, PackageManager pm) { 
     mContext = c; 
     mListAppInfo = list; 
     mPackManager = pm; 
    } 

    @Override 
    public int getCount() { 
     return mListAppInfo.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return mListAppInfo.get(position); 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // get the selected entry 
     ApplicationInfo entry = (ApplicationInfo) mListAppInfo.get(position); 

     // reference to convertView 
     View v = convertView; 

     // inflate new layout if null 
     if(v == null) { 
      LayoutInflater inflater = LayoutInflater.from(mContext); 
      v = inflater.inflate(R.layout.appliligne, null); 
     } 

     // load controls from layout resources 
     ImageView ivAppIcon = (ImageView)v.findViewById(R.id.ivIcon); 
     TextView tvAppName = (TextView)v.findViewById(R.id.tvName); 
     TextView tvPkgName = (TextView)v.findViewById(R.id.tvPack); 

     // set data to display 
     ivAppIcon.setImageDrawable(entry.loadIcon(mPackManager)); 
     tvAppName.setText(entry.loadLabel(mPackManager)); 
     tvPkgName.setText(entry.packageName); 

     // return view 
     return v; 
    } 
} 

と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" /> 

私はそれが助けてくれることを願っています

について

関連する問題