Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change android application name and icon at runtime?

After installing an android app, is it possible to change app icon and name dynamically(at runtime) when you press a button in the app?

This is the code so far..,

getPackageManager().setComponentEnabledSetting(

new ComponentName("com.example.badgemaste", "com.example.badgemaste.MainActivity"),

                PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);


            try {
getPackageManager().setComponentEnabledSetting(
                           new ComponentName("com.example.badgemaste", "com.example.badgemaste.MainActivity-One"), 
                                               PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
                            } catch (Exception e) {
                               //handle
                            }

And in the manifest file...

 <application
        android:allowBackup="false"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name2"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.badgemaste.MainActivity"
            android:label="@string/app_name" 
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity-alias
            android:icon="@drawable/ic_laun" 
            android:label="@string/app_name" 
            android:name="com.example.badgemaste.MainActivity-One"
            android:enabled="true"
            android:targetActivity="com.example.badgemaste.MainActivity">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias> 



    </application>

When I run this code, initially first icon will appear (in drawer and also in action bar) and then after I close the app and re-run it, it will switch to the other icon.

What I want to do is, assign this procedure to a button, that is if I only press that button, icon will change, otherwise no. How can I achieve this??

like image 986
icSapper Avatar asked Jun 21 '14 19:06

icSapper


1 Answers

Now that you're able to change the activity using PackageManager, just Create a button and put the code in it's OnClick.

If this is working, so should that.

like image 141
Sahil Bajaj Avatar answered Oct 02 '22 14:10

Sahil Bajaj