haizeiwangjoin 2015-05-21 13:00 采纳率: 0%
浏览 1650

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

我已经获取了手机中的程序列表,并添加了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中的内容如下
图片说明

  • 写回答

5条回答 默认 最新

  • bdmh 移动开发领域优质创作者 2015-05-21 13:06
    关注

    提示你activitiy没找到,你的activity必须在maifest文件中声明才行,加上就好了

    评论

报告相同问题?

悬赏问题

  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器