簡體   English   中英

如何在Android中以編程方式根據開關值更改應用程序圖標

[英]How to change application icon as per switch value in Android programmatically

我的應用程序中有一個開關。 如果開關打開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);
            }

        }
    });

清單是

<?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似乎找不到要啟動的Activity,因為兩個別名都被禁用了。 嘗試從AndroidManifest.xml中刪除android:enabled="false"

來自chainfire SuperSU教程。 他在那里所做的是,將任何一個活動別名都設置為默認-> android:enabled=true ,並將其設置為默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM