问题来源
现在已经很少有手机用第三方桌面了,所以很多桌面程序也慢慢消退了,注意我说的是消退,不是消失,这不,产品的需求就来了,既然来了,那我们就岔开一下话题,说一下创建桌面应用的几个步骤吧
岔开话题
第一个就是配置manifest
<application
<activity
android:name="com.activity.XXXActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
这个时候就是一个正宗的桌面应用了,下一句就是获取到手机里的应用了
List<ResolveInfo> mApps = mPackageManager.queryIntentActivities(intent, 0);
下面是获取APP名字
mApps .get(i).loadLabel(mPackageManager);
获取图标
mApps .get(i).activityInfo.loadIcon(getPackageManager());
包名
mApps .get(i).activityInfo.packageName
跳转到应用
ResolveInfo info = mApps .get(position);
String pkg = info.activityInfo.packageName;
String cls = info.activityInfo.name;
ComponentName componentName = new ComponentName(pkg, cls);
Intent intent1 = new Intent();
intent1.setComponent(componentName);
startActivity(intent1);
到这基本就实现了一个简单的桌面
问题发现
这个时候问题出现了,进去某些应用按返回键,无法退出,看了网上没有任何解决方法,安装了别的第三方桌面是可以的。
问题解决
这时候纳闷了,思来想去,会不会是activity启动的问题呢,于是乎就在以上的代码中加了一句
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
到此问题就解决了。
虽然做桌面的人少了,但是也记录下吧。