kohant 2014-09-26 08:50
浏览 1317

Android如何根据包名加载指定应用

楼主想实现一个加载指定应用到gridview上,从网上参考了别人的代码然后改来改去都没能成功,楼主是初学者,java和android都比较薄弱,求各大侠能指点一下loadapps那一段代码要怎么写( ⊙o⊙ )

public class Appinfo extends Activity {
private List mApps;
GridView mGrid;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    loadApps();
    setContentView(R.layout.appinfo);
    mGrid = (GridView) findViewById(R.id.myListView1);
    mGrid.setAdapter(new AppsAdapter());

    mGrid.setOnItemClickListener(listener);
}

private OnItemClickListener listener= new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        // TODO Auto-generated method stub
        ResolveInfo info = mApps.get(position);         
    String pkg = info.activityInfo.packageName;         
           Uri uri = Uri.fromParts("package", pkg, null);
        Intent it = new Intent(Intent.ACTION_DELETE, uri);
           startActivity(it);

    }

};

private void loadApps() {
    List<ResolveInfo> mAppstr;

    Intent mainIntent = new Intent(Intent.ACTION_MAIN,null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);   
   mAppstr = getPackageManager().queryIntentActivities(mainIntent, 0);

    if (!mAppstr.isEmpty()) {
        List<Intent> targetedShareIntents = new ArrayList<Intent>();
        for (ResolveInfo info : mAppstr) {
            Intent targeted = new Intent(Intent.ACTION_MAIN,null);

            ActivityInfo activityInfo = info.activityInfo;

            // judgments : activityInfo.packageName, activityInfo.name, etc.
            if (activityInfo.packageName.contains("com.xx") ||activityInfo.name.contains("com.xx")) {
                 targeted.setPackage(activityInfo.packageName);
                targetedShareIntents.add(targeted);
            }
           mApps = getPackageManager().queryIntentActivities(targetedShareIntents, 0);

        }}
}   

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public class AppsAdapter extends BaseAdapter{

    @Override
    public final int getCount() {
        // TODO Auto-generated method stub
        return mApps.size();    
    }

    @Override
    public final Object getItem(int position) {
        // TODO Auto-generated method stub
        return mApps.get(position);
    }

    @Override
    public final long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) { 
        // TODO Auto-generated method stub
        ImageView i;
        if(convertView == null){
            i = new ImageView(Appinfo.this);
            i.setScaleType(ImageView.ScaleType.FIT_CENTER);
            i.setLayoutParams(new GridView.LayoutParams(100,100));
        }
        else {
            i =(ImageView) convertView;
        }
        ResolveInfo info = mApps.get(position);
        i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));

        return i;
    }


}

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 用PLC设计纸袋糊底机送料系统
    • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
    • ¥15 用C语言输入方程怎么
    • ¥15 网站显示不安全连接问题
    • ¥15 github训练的模型参数无法下载
    • ¥15 51单片机显示器问题
    • ¥20 关于#qt#的问题:Qt代码的移植问题
    • ¥50 求图像处理的matlab方案
    • ¥50 winform中使用edge的Kiosk模式
    • ¥15 关于#python#的问题:功能监听网页