问题背景:
客户要求在桌面创建一个通话记录的Icon图标,通话记录属于Dialer中的一个Activity。
1、创建桌面Icon:
在对应的AndroidManifest.xml文件中添加intent-filter
<action android:name=""android.intent.action.MAIN"" />
<category android:name=""android.intent.category.LAUNCHER"" />
如下代码位置:
<activity
android:label=""@string/call_log_activity_title""
android:name=""com.android.dialer.app.calllog.CallLogActivity""
android:theme=""@style/DialtactsTheme""
android:taskAffinity=""android.task.dialer.calllog""
android:launchMode=""singleTask"">
<!--zzh add begin-->
<intent-filter>
<action android:name=""android.intent.action.MAIN"" />
<category android:name=""android.intent.category.LAUNCHER"" />
</intent-filter>
<!--zzh add end-->
</activity>
2、这样虽然创建了桌面icon,但是图标是和应用原来的图标一模一样,即使在Launcher或者Framwork去替换也只能通过包名来更新资源,但只能一对一。
为了解决这个问题可以在AndroidManifest.xml文件中的Activity下添加如下代码:
android:icon=“@drawable/calllog_itel”>
<activity
android:label=""@string/call_log_activity_title""
android:name=""com.android.dialer.app.calllog.CallLogActivity""
android:theme=""@style/DialtactsTheme""
android:taskAffinity=""android.task.dialer.calllog""
android:launchMode=""singleTask"">
<!--zzh add begin-->
android:icon="@drawable/your_icon">
<intent-filter>
<action android:name=""android.intent.action.MAIN"" />
<category android:name=""android.intent.category.LAUNCHER"" />
</intent-filter>
<!--zzh add end-->
</activity>
3、实现后的效果,其中call_log_activity_title就是额外图标的名称,在近期任务中也是ok的