开发者社区> 问答> 正文

在一个程序中启动其他程序老被强退?

我已经获取了手机中的程序列表,并添加了setOnItemLongClickListener()方法
代码部分如下

 lv.setOnItemLongClickListener(new OnItemLongClickListener(){
 public boolean onItemLongClick(AdapterView<?> parent, View v,
 int position, long id){
 String activityName = null; 
 final Map dataSet=items.get(position);
 String packageName=dataSet.get("packageName").toString();//得到要启动的程序的包名
 System.out.println(packageName);//
 Toast.makeText(getBaseContext(),packageName,Toast.LENGTH_LONG).show();
 PackageManager pm=getPackageManager();
 Intent resolveIntent=new Intent(Intent.ACTION_MAIN);
 resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
 List resolve=pm.queryIntentActivities(resolveIntent,PackageManager.MATCH_DEFAULT_ONLY);
 System.out.println(resolve.size());
 Collections.sort(resolve,new ResolveInfo.DisplayNameComparator(pm));//将获取到的ResolveInfo进行排序
 for(ResolveInfo reInfo:resolve){
 System.out.println("包名+++++++++++"+reInfo.activityInfo.packageName);
 if(reInfo.activityInfo.packageName.equals(packageName.toString())){
 activityName=reInfo.activityInfo.name;//获取应用程序启动activity的名字
 System.out.println("1111111111111111111111111");
 }
 }
 System.out.print("是否执行到了这一步");
 Intent launchIntent=new Intent();
 launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//为将要运行的程序开启一个新的任务栈
 launchIntent.setComponent(new ComponentName(packageName,activityName));

 boolean result=find(packageName);
 if(result){
 Intent intent1=new Intent(main.this,unlock.class);
 intent1.putExtra("packageName",packageName);
 startActivity(intent1);
 finish();
 }else{
 startActivity(launchIntent);
 }

但每次都被强退 根据logcat发现每次执行完for循环后,就被强退
logcat中的内容如下
screenshot

展开
收起
爵霸 2016-06-20 09:16:15 1868 0
1 条回答
写回答
取消 提交回答
  • 提示你activitiy没找到,你的activity必须在maifest文件中声明才行,加上就好了

    2019-07-17 19:43:38
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
15分钟打造你自己的小程序 立即下载
小程序 大世界 立即下载
《15分钟打造你自己的小程序》 立即下载