android - 如何以编程方式根据 Android 中的开关值更改应用程序图标

标签 android

我的应用程序中有一个开关。如果开关是 on 我想设置一个不同的图标。如果开关是 off,我必须设置另一个图标。

我正在尝试这样

    tButton.setOnCheckedChangeListener(new OnCheckedChangeListener()
    {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {

            if (isChecked)
            {
                tvStateofToggleButton.setText("ON");
            getPackageManager().setComponentEnabledSetting(
                        new ComponentName("com.samir", "com.samir.MainActivity-Red"), 
                            PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
            } else
            {
                tvStateofToggleButton.setText("OFF");
                getPackageManager().setComponentEnabledSetting(
                   new ComponentName("com.samir", "com.samir.MainActivity-Blue"), 
                          PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
            }

        }
    });

list 是

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.samir"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
         android:launchMode="singleTask" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>

    <activity-alias
        android:name=".MainActivity-Red"
        android:enabled="false"
        android:icon="@drawable/red"
        android:label="@string/app_name"
        android:targetActivity=".MainActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity-alias>
    <activity-alias
        android:name=".MainActivity-Blue"
        android:enabled="false"
        android:icon="@drawable/blue"
        android:label="@string/app_name"
        android:targetActivity=".MainActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

</manifest>

控制台显示如下

       [2013-11-09 13:03:40 - Android Switch Button] ActivityManager: Error type 3
       [2013-11-09 13:03:40 - Android Switch Button] ActivityManager: Error: Activity class {com.samir/com.samir.MainActivity-Red} does not exist.

谁能给我建议正确的方法

最佳答案

您无法在安装后更改您的应用程序图标。相反,您可以创建一个小部件,请求用户将其放置在他们的主屏幕上,然后更改其中的图像。

至于你的错误,com.samir.MainActivity-Redcom.samir.MainActivity 的别名,所以尝试使用 com.samir.MainActivity

关于android - 如何以编程方式根据 Android 中的开关值更改应用程序图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873585/

相关文章:

安卓编程 : I cannot get data from a background thread AND show a progress dialog

android - 作为我的开发者服务的一部分,我可以向 Google Play 提交(发布)应用程序吗?

android - 从服务读取时首选项不是最新的

android - 将对象保存到内部存储器上的文件 (Android)

android - 在菜单项的可见性模式之间设置动画

android - 如何以编程方式在 Android 中设置可编辑的真/假 EditText?

android - 使用 GROUP BY 从 SQLiteDatabase 获取行,然后使用 SimpleCursorAdapter 呈现它们

Android-NDK "java.lang.UnsatisfiedLinkError"

Android 防止泄漏的窗口

android - 我应该单独存储变换矩阵吗?