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 乘性高斯噪声在深度学习网络中的应用
    • ¥15 运筹学排序问题中的在线排序
    • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
    • ¥30 求一段fortran代码用IVF编译运行的结果
    • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
    • ¥15 C++ 头文件/宏冲突问题解决
    • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
    • ¥50 安卓adb backup备份子用户应用数据失败
    • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
    • ¥30 python代码,帮调试,帮帮忙吧