4

インストール後にアプリのアイコンとラベルを変更しようとしています。

マニフェストに、このコードを入れました:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyTheme" >
// 1st Activity declaration
<activity
    android:name=".activities.SplashScreenActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="portrait"
    android:theme="@style/Theme.Sherlock.NoActionBar" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        // I removed the next line to put it with the alias :
        // <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

// Activity Aliases
<activity-alias
    android:name=".Alias_0"
    android:enabled="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:targetActivity=".activities.SplashScreenActivity" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity-alias>
<activity-alias
    android:name=".Alias_1"
    android:enabled="false"
    android:icon="@drawable/alias1"
    android:label="@string/alias1"
    android:targetActivity=".activities.SplashScreenActivity" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

そして、PreferenceActivity では、次のようなエイリアスを有効/無効にしています:

packageManager.setComponentEnabledSetting(
        new ComponentName("com.mypackage", "com.mypackage.Alias_0"),
        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
        PackageManager.DONT_KILL_APP);

packageManager.setComponentEnabledSetting(
        new ComponentName("com.mypackage", "com.mypackage.Alias_1"),
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
        PackageManager.DONT_KILL_APP);

アクティブ化されたエイリアスは常に 1 つだけです。

これが変更されると、アプリケーション ランチャーで古いアプリのアイコン/ラベルが消えたことを確認できます。一部のデバイスでは、ランチャーがアクティブ化されたものを表示するのに時間がかかります (非常に長く続く場合があります)。この間、アイコンがないため、アプリを起動する方法はありません。

プログラムでランチャーを更新する方法はありますか?

また、エイリアスの有効化/無効化後にショートカットを作成しようとしました。正常に動作しますが、ショートカットを移動しようとすると、ショートカットを新しい位置に放すと、Android ランチャーがクラッシュします。ここに私が使用しているコードがあります:

Intent shortcutIntent = new Intent(getApplicationContext(), SplashScreenActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);

Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutTitle);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), shortcutDrawableId));
addIntent.putExtra("duplicate", false);

addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(addIntent);

何か不足していますか?

編集:明確にするために、アプリをインストールする前にアプリの名前を変更するつもりはありません。アプリが自分の電話にインストールされたら、それをやりたいです。

ユーザーがアプリをインストールしたら、別のアイコン/ラベルを使用できるようにしたいと考えています。そのオプションを有効にしない場合は、元のアイコン/ラベルを使用する必要があります。

また、アップデートでアプリの名前を変更するつもりもありません。

4

3 に答える 3

-1

アプリケーションの名前を変更するには、パッケージ エクスプローラーでアプリケーション フォルダーを右クリックし、[リファクタリング] を探して [名前の変更] をクリックします。

アプリケーションのアイコンを変更するには、drawable フォルダー内のすべてのバリエーションと、res フォルダー内の「ic_launcher-web.png」を変更する必要があります。

于 2013-08-01T21:01:58.773 に答える