3

多くの人がルーチンの一部としてカメラを使用する職場設定でタブレット用に設計されたアプリがあります。スーパーバイザーがアプリを離れることは適切かつ必要なことですが、他の人が誤って離れることは難しいはずです。ただし、ホームキーの長押しは、誤って行うのはかなり簡単です。私はそれを自分でやった。最近のタスクのリストが表示されます。ユーザーはそれらのいずれかをタップすることができ、それらのいくつかは平均的なスマートフォン所有者ほど洗練されていないため、失われます.

このリストは、getRecentTasks を介してプログラムで取得できます。私の質問は、そのリストから最新のタスク (私のもの) を除くすべてを削除する方法、長さを 1 つの要素だけに減らす方法、またはリストされたタスクを変更してアプリケーションを指すようにする方法です。私はこれが可能であることを知っています.Toddler Lockがそれを行います.

私の最初の試みは、参照によって渡されることを期待して、返されたインテントを変更することでした。そのような幸運はありません。他のアイデアはありますか?

(ホームキーを短く押すことについて話しているのではありません。ここで見つかったものに部分的に基づいて、すでにそれを理解しています。)

4

2 に答える 2

4

クレジットは、私がこの問題について話し合ったToddlerLockの作者に与えられます。導入されたエラーは完全に私のものです。

マニフェスト内に、空の文字列と等しいアフィニティを持つ無効なアクティビティを作成します。プログラムで有効にしてから、FLAG_ACTIVITY_NEW_TASKのフラグが付いたインテントを使用して起動します。最近の活動に登場します。タスクを無効にすると、表示から消えます。

これらを十分に活用すると、最近のアクティビティの表示が殺到します。ダミーのアクティビティよりも多くのアクティビティに戻る方法がある場合、ユーザーはプログラムから抜け出すことができます。

終了するときは必ずタスクを無効にしてください。また、最近のアクティビティからこれらのタスクの1つを選択した場合は、プログラムが適切な処理を実行するようにしてください。

マニフェストの2つのタスクの例を次に示します。

    <activity android:name="com.foo.android.recentactivity.Clear1"
              android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
              android:label="."
              android:enabled="false"
              android:icon="@drawable/clearicon"
              android:taskAffinity="" />
    <activity android:name="com.foo.android.recentactivity.Clear2"
              android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
              android:label="."
              android:enabled="false"
              android:icon="@drawable/clearicon"
              android:taskAffinity="" />
于 2011-06-16T16:51:46.793 に答える
1

アプリケーションからはできません。必要な動作を備えたカスタム システム イメージを構築する必要があります。

于 2011-06-06T23:06:35.937 に答える