4

ストック ランチャーから自分のアプリを指す特定の 1 つ (より良い) またはすべてのショートカット (最悪の場合) を削除する必要があります。UNINSTALL_SHORTCUT ブロードキャストを使用できませんでした。機能しないようです (これと同様の問題です

私のアプリはシステム証明書 (/system/app にインストールされます) によって署名されているため、ショートカットを削除する方法についていくつかのアイデアがあります。

  1. ics で UNINSTALL_SHORTCUT を使用する有効な方法はありますか?

  2. ストックランチャーをアンインストールすると、アプリを指すすべてのリンクが削除されることがわかりました。アンインストールをシミュレートする (またはシステム権限を持つ package_removed ブロードキャストを送信する) 方法はありますか? 多分パッケージマネージャーの一部を書きますか?

  3. 2 が不可能な場合、アプリを再インストール/アップグレードすることで、パッケージ マネージャーに PACKAGE_REMOVED ブロードキャストを送信させる方法はありますか? (INSTALL_PACKAGES権限を持つシステム権限があるため、アプリをサイレントにインストール/アップグレードできます)。

4

3 に答える 3

4

ショートカット以外に、アプリを起動する別の方法があると思います。

アプリドロワーに表示されないようにするには、削除するだけです

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

アクティビティのマニフェストから、ショートカットは表示されません

更新:ショートカットを別のアプリ/ apkに分けて、ショートカットが必要なときにショートカット「アプリ」をインストールし、不要なときにアンインストールすることができます。

于 2012-06-04T17:40:57.813 に答える
2

UNINSTALL_SHORTCUT は、スペース キーを持つ EXTRA_SHORTCUT_NAME ウィッチでは機能しないようです。

EXTRA_SHORTCUT_NAME からスペース キーを削除してみてください。

これは私のために働いた:

private void deleteShortCut(Context context) {

    Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
    shortcutIntent.setClassName("com.example.androidapp", "SampleIntent");
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    shortcutIntent.putExtra("someParameter", "HelloWorld");

    Intent removeIntent = new Intent();
    removeIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    removeIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortcutName");
    removeIntent.putExtra("duplicate", false);

    removeIntent
            .setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");       
    context.sendBroadcast(removeIntent);
}

private void addShortCut(Context context) {

    Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
    shortcutIntent.setClassName("com.example.androidapp", "SampleIntent");
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    shortcutIntent.putExtra("someParameter", "HelloWorld");

    Intent addIntent = new Intent();
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortcutName");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
            Intent.ShortcutIconResource.fromContext(context,
                    R.drawable.ic_launcher));

    addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    context.sendBroadcast(addIntent);
}
于 2012-06-11T11:32:34.400 に答える
1

ショートカットを削除するには:

ショートカットをタップアンドホールドし、そのショートカットを下部のゴミ箱にドラッグして削除できます。赤くなったら手を離します。ショートカットは削除されますが、アプリはインストールされたままになります。

ショートカットを追加するには:

ショートカットを作成したいアプリが見つかったら、そのアプリを長押しします。アプリ メニューが消えて、ホーム画面に戻ります。アプリのアイコンを左右にドラッグして、別のホーム画面を表示できます。アプリを放して、ショートカットを好きな場所に配置します。

于 2012-10-10T18:24:52.050 に答える