问题描述
- 在一个程序中启动其他程序老被强退?
- 我已经获取了手机中的程序列表,并添加了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()packageNameToast.LENGTH_LONG).show();
PackageManager pm=getPackageManager();
Intent resolveIntent=new Intent(Intent.ACTION_MAIN);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List resolve=pm.queryIntentActivities(resolveIntentPackageManager.MATCH_DEFAULT_ONLY);
System.out.println(resolve.size());
Collections.sort(resolvenew 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(packageNameactivityName));boolean result=find(packageName);
if(result){
Intent intent1=new Intent(main.thisunlock.class);
intent1.putExtra(""packageName""packageName);
startActivity(intent1);
finish();
}else{
startActivity(launchIntent);
}
但每次都被强退 根据logcat发现每次执行完for循环后,就被强退
logcat中的内容如下
解决方案
提示你activitiy没找到,你的activity必须在maifest文件中声明才行,加上就好了
解决方案三:
我加了activity啊 activity名字是main
解决方案四:
关闭其他软件试试,如果不行就下载360修复看看还是不行就买张系统碟重新装系统
解决方案五:
你相应的权限添加了吗?如果权限没有添加完全也会出现闪退的。
如果回答对你有帮助请采纳
时间: 2024-12-22 14:07:56