您的位置:首页 > 移动开发

Android学习日记(yzy):显示application并调用

2016-07-19 10:14 477 查看
 一:显示用的控件是listview 和 baseAdapter 。

 二:利用intent-filter过滤,和packageManager调用所有应用。

 三:调用指定包名ComponentName方法启动相应应用

MainActivy :

public class MainActivity extends Activity {
private ListView listView;
private List<ResolveInfo> mApps;

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

Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
mApps = getPackageManager().queryIntentActivities(intent, 0);

listView = (ListView)findViewById(R.id.listView);
listView.setAdapter(new MyAdapter(this,mApps));
itemClick();
}
public void itemClick(){
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
ResolveInfo info = mApps.get(position);
String packageName = info.activityInfo.packageName;
String applicationName = info.activityInfo.name;
ComponentName componentName = new ComponentName(packageName, applicationName);
Intent intent = new Intent();
intent.setComponent(componentName);
startActivity(intent);

}
});
}

}


BaseAdapter:

public class MyAdapter extends BaseAdapter {
List<ResolveInfo> apps;
Context context;

public MyAdapter(Context context , List<ResolveInfo> apps){
super();
this.context = context;
this.apps = apps;
}

public int getCount(){
return apps.size();
}

public Object getItem(int position){
return apps.get(position);
}

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

public View getView(int position , View contentView , ViewGroup parents){
ViewHolder viewHolder ;
if(contentView == null){
viewHolder = new ViewHolder();
contentView = LayoutInflater.from(context).inflate(R.layout.view_listview_item,null);

viewHolder.IV_img = (ImageView)contentView.findViewById(R.id.IV_img);
viewHolder.TV_packageName = (TextView)contentView.findViewById(R.id.TV_packageName);
viewHolder.TV_applciationName = (TextView)contentView.findViewById(R.id.TV_applciationName);

contentView.setTag(viewHolder);
}else {
viewHolder = (ViewHolder) contentView.getTag();
}
ResolveInfo appInfo = apps.get(position);
viewHolder.IV_img.setBackground(appInfo.activityInfo.loadIcon(context.getPackageManager()));
viewHolder.TV_applciationName.setText(appInfo.activityInfo.name);
viewHolder.TV_packageName.setText(appInfo.activityInfo.packageName);

return contentView;
}

static class ViewHolder{
public ImageView IV_img;
public TextView TV_packageName;
public TextView TV_applciationName;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: