The issue with the factory apps icons not appearing on Oreo is still there, as I had posted a few weeks ago.
The issue with the factory apps icons not appearing on Oreo is still there, as I had posted a few weeks ago.
]]>The issue with the factory apps icons not appearing on Oreo is still there, as I had posted a few weeks ago.
]]>
< ![CDATA[
The developer (Pierre Hébert) is absent. We don’t know when he’ll come back. Don’t expect anything to change, there will be no updates without a developer.
]]>
< ![CDATA[
The timing is incredible.
I just finished updating to oreo (nexus 5X) and I didn’t ‘play’ with it yet, but for me all the icons work fine (except they take more time to load than before, but maybe that’s due to the device restart).
This means this issue is not an oreo issue, but instead an oreo+device? issue. (Or maybe I’m extremely lucky and for some odd reason it works for me only)
Which device do you have?
If I discover something on the following days I’ll say it here.
]]>
< ![CDATA[
TrianguloY I have A Pixel. And it’s fine at first, but then when the system apps get UPDATED, that’s when the icons go take a shit.
]]>
< ![CDATA[
Oh, that makes sense…somehow. I’ll try to be careful when that happens and I’ll report it.
]]>
< ![CDATA[
That was fast (YouTube is considered a factory app, strange)
I confirm the issue, after the update to oreo when a factory app is updated its icon (on the app drawer and everywhere it was used) is replaced with the default android icon (on my device those default icons are squared instead of rounded, can this be changed somewhere?)
More strange facts:
When opening the icon chooser and selecting one of those apps, a lot (in some cases all) the icons are shown as this default one (although I remember seeing some previously, maybe they are the same and I’m mistaken)
]]>
< ![CDATA[
After a fun afternoon I found that the issue is a new AdaptiveIconDrawable which lightning doesn’t seem to know how to handle. And also that it not only happens with device apps. It happens with ANY app that use adaptive icons, new on android oreo.
I made a script that extracts the drawable and converts it to a lightning Image.
Aashish Bharadwaj could you test it? (It works fine in my device, but before publishing it I prefer you give it a try. Don’t worry, the script can’t corrupt your data or delete things. The worst thing it can do is replace custom icons if you have some.
Open the script editor, create a new script with lightning and item menu categories selected (swipe from the left side to open the menu) and paste the code. Note: if you want circular icons change the false constant to true (first line)
To use it you can long tap an item choose scripts and select it (this will ‘fix’ that item) or long tap the background of a container, choose scripts and select it (this will ‘fix’ all broken items in that container and all subcontainers recursively).
Tell me how it works
]]>
< ![CDATA[
var ROUND=false;//false to use square icons, true to use rounded ones
bindClass(“android.graphics.drawable.LayerDrawable”);
var cntx=LL.getContext();
var event=LL.getEvent();
var source=event.getSource();
if(source==”MENU_APP”){
fixContainer(event.getContainer());
}
if(source==”MENU_ITEM”){
fixIcon(event.getItem(),true);
}
function fixContainer(c){
var items=c.getItems();
for(var t=0;t
var item=items.getAt(t);
if(item.getType()==”Shortcut”) fixIcon(item,false);
if(item.getType()==”Panel”||item.getType()==”Folder”) fixContainer(item.getContainer());
}
}
function fixIcon(i,ask){
if(i.getDefaultIcon()==null || (ask && confirm(“This will override the custom icon. You want to continue?”))){
var icon = cntx.getPackageManager().getApplicationIcon(i.getIntent().getComponent().getPackageName());
try{
var layerDrawable = new LayerDrawable([icon.getBackground(),icon.getForeground()]);
var width = layerDrawable.getIntrinsicWidth();
var height = layerDrawable.getIntrinsicHeight();
var image=Image.createImage(width,height);
var canv=image.draw();
var path = new Path();
if(ROUND){
path.addCircle(width / 2, height/ 2, Math.min(width/2, height / 2), Path.Direction.CCW);
}else{
path.addRoundRect(0,0,width,height,width*0.1,height*0.1,Path.Direction.CCW)
}
canv.clipPath(path);
layerDrawable.setBounds(0, 0, width, height);
layerDrawable.draw(canv);
i.setDefaultIcon(image);
Android.makeNewToast(“icon changed: “+i,true).show();
}catch(e){
Android.makeNewToast(“error on icon: “+i,true).show();
}
}
}
]]>
< ![CDATA[
The script works fine on my pixel.
]]>
< ![CDATA[
Lukas Morawietz Why idea what happened?
]]>
< ![CDATA[
TrianguloY So I’ve been testing this and it’s been working so far, sorry for the late response.
It’s very cool that you know how to script stuff like that. The only scripting I know is limited shell scripting. Thank you so much.
It made my Chrome an ugly square, but I know that’s Oreo’s stupid new icons.
The pixel came with annoying circles and now it’s a whole bunch of annoying shapes. I really don’t understand what Google is trying to achieve here…
Thank you.
]]>
< ![CDATA[
Aashish Bharadwaj thanks for trying it.
I’ve been tweaking it and now it is a bit more automatic and configurable, as soon as I have a bit of time I’ll share it.
]]>
< ![CDATA[
+TrianguloY It works fine for my OP3!
Special Thx
]]>