0

シンプルなパンチイン/パンチアウトタイムレコーダーアプリを作りました。アプリの状態(タイムアウト/タイムイン)を切り替えるショートカットをホーム画面に作成するオプションをユーザーに追加したいのですが、このショートカットでアプリを画面上で開く必要はまったくありません。

ここに私の setupShortcut() があります

private void setupShortcut() {
    Intent shortcutIntent = new Intent(this, Toggle.class);
   // shortcutIntent.setClassName(this, Toggle.class.getName());  
    shortcutIntent.putExtra(EXTRA_KEY, "ToggleShortcut");  

    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  


    Intent intent = new Intent();
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ToggleShortcut");
    Parcelable iconResource = Intent.ShortcutIconResource.fromContext(this,  R.drawable.app_sample_code);
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
    setResult(RESULT_OK, intent);

}

Toggle.class は、状態を切り替えるアクティビティです。マニフェストには、これらの設定があります

<activity android:name=".Toggle" android:exported="true" android:theme="@android:style/Theme.Translucent.NoTitleBar">

今のところ、ホーム画面にショートカットを作成して押すことができます。初めて押すと、Toggleアクティビティが開始され、正常に完了しますが、画面上にTimeClockアクティビティも開きます. 戻るボタンを押すと、ホームに戻ります。このショートカットを押すと、Toggle アクティビティが開始され、画面は変更されません。追加する前に:shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 毎回 TimeClock アクティビティを開きます。今は初めてです。しかし、トグルショートカットが押されたときに画面に何も表示されないようにしたい. それを取り除く方法を知っている人はいますか?

4

2 に答える 2

4

ランチャーの問題は、アクティビティを開始することですが、必要なのはサービスを開始して、バックグラウンドでアプリの状態を変更できるようにすることです。本当にやりたいことは、ランチャーのショートカットではなくWidgetを作成することのようです。バックグラウンドで物事を切り替えるサービスを開始するボタンを持つようにウィジェットを構成できます。

于 2010-05-25T22:28:48.313 に答える
0

あなたは「もっと簡単に」あなたが望むことをする隠された活動をすることができます!

このアクティビティは透過的なテーマを使用する必要があるため、特定の条件なしでonCreate()の最後にfinish()が表示されたり呼び出されたりすることはありません。

于 2011-09-08T08:58:58.100 に答える