Edwin Alex
Edwin Alex

Reputation: 5108

Can't change the default icon of Android app?

I am facing a problem. I have converted a javascript application to Android app by using phonegap, cordova and eclipse. The App works cool.

But the problem is, it always displays cordova icon as app icon. I replaced all the icons in the "project/res" folder. But still it shows the default icon only?

I googled it and came to know that i have to change in the manifest file. So, i changed in the AndroidManifest.XML with the code,

android:icon="@drawable/icon"

"icon" is my image name.

What is the problem here? Why i am not getting my own icon? I am new to this Android Environment.

I followed this article http://smartgap.wordpress.com/2012/08/11/customizing-launch-icon-on-eclipsephonegap-application/

My Manifest File :

<?xml version="1.0" encoding="utf-8"?>
<!--
       Licensed to the Apache Software Foundation (ASF) under one
       or more contributor license agreements.  See the NOTICE file
       distributed with this work for additional information
       regarding copyright ownership.  The ASF licenses this file
       to you under the Apache License, Version 2.0 (the
       "License"); you may not use this file except in compliance
       with the License.  You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing,
       software distributed under the License is distributed on an
       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
       KIND, either express or implied.  See the License for the
       specific language governing permissions and limitations
       under the License.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:windowSoftInputMode="adjustPan"
      package="com.mage.edunxt" android:versionName="1.0" android:versionCode="1" android:hardwareAccelerated="true">
    <supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:xlargeScreens="true"
        android:resizeable="true"
        android:anyDensity="true"
        />

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.RECORD_VIDEO"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />   
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />   
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />

    <application android:icon="@drawable/icon" android:label="@string/app_name"
        android:hardwareAccelerated="true"
        android:debuggable="true">
        <activity android:name="EduNxtQTIPlayer" android:label="@string/app_name"
                android:theme="@android:style/Theme.Black.NoTitleBar"
                android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15"/>
</manifest> 

Upvotes: 4

Views: 21135

Answers (6)

Jonatan Kaźmierczak
Jonatan Kaźmierczak

Reputation: 1911

The info provided on the PhoneGap web page explains that, but it may be not so clear at the first glance (link: http://docs.build.phonegap.com/en_US/configuring_icons_and_splash.md.html#_icons).

Simple explanation: just copy your icon to the app root directory and call it icon.png. That's all what you need.

In my case I made sure, that the icon has size 96x96px (bigger somehow didn't work, but could be my fault). And also after upload and rebuild, the app content was not updated - so I needed to repeat upload+rebuild few times.

Upvotes: 0

nww04
nww04

Reputation: 1857

I also would like to share my answer on this one in case they can't get it to work using the steps provided by previous users.

I can't get mine to work using the steps provided here and I am able to figure it out by using mipmaps. I generated icon sizes using this open source project which is great: Android Asset Studio

I notice now that the generated icons are now placed in mipmap folders not on drawables. I think this what the google want us to do to separate the drawables from icons. Having done this I reference the newly imported mipmap folders using this:

 android:icon="@mipmap/ic_launcher"

And here is the folder structure:

res/
    mipmap-mdpi/ic_launcher.png (48x48 pixels)
    mipmap-hdpi/ic_launcher.png (72x72)
    mipmap-xhdpi/ic_launcher.png (96x96)
    mipmap-xxhdpi/ic_launcher.png (144x144)
    mipmap-xxxhdpi/ic_launcher.png (192x192)

I cleaned and rebuilt the project and I can now see the icon! But theres a catch. It was added on later version of android (v4.3 as stated here link). There is not much documentation on this if this will work on older version of android.

Upvotes: 0

Elixander Chen
Elixander Chen

Reputation: 101

Make changes in <project location>\platforms\android\ant-build\res and not <project location>\platforms\android\res

For some people making changes in the latter location may have worked, but having noticed Phonegap copying from \android\res into \android\ant-build\res, I decided to check in there and found a separate set of drawable folders containing the default phonegap icon.

Changing those finally worked.

Since I'm building and running locally and not using Adobe PhoneGap Build, changing icons in <project location>\www\res\icon\android won't work either.

Upvotes: 0

Leo
Leo

Reputation: 1505

I had to do the following

  1. add all the files to my res/Drawables folders
  2. set the icon attribute on the activity in the manifest.xml. It gave me the option to browse for the files setup in my Drawable directories.
  3. I had to do a clean for it to work.

The clean is really important it seems to keep using the old icons until you clean.

In eclipse Project->Clean

Upvotes: 7

techtinkerer
techtinkerer

Reputation: 1300

i have been building locally using phonegap CLI. No Eclipse and ran into multiple problems as looking at root folder ( useless for local builds.. Phonegap: how about spewing some notes when building ).

I finally copied individual icon files of different sizes to drawable* folders.

drawable-hdpi drawable-ldpi drawable-mdpi drawable-xhdpi

this wasted LOOOOOOOT of my time.

Upvotes: 2

Edwin Alex
Edwin Alex

Reputation: 5108

I got it worked by doing these.

I just put my icon in all the folders inside "project/bin/res" also.

Then i added the following line in config.xml under "project/res/xml".

<icon src="icon.png" /> 

Now it is working cool.

Upvotes: 5

Related Questions