2

Home Replacement アプリを作成しようとしていますが、多くの不具合が発生しています。アプリを初めて起動すると、基本設定を構成できるいくつかのセットアップ画面が表示されます。それが完了すると、HomeScreen アクティビティに到達します。AndroidManifest.xml には、次のものが含まれています。

<activity android:name="HomeScreenMain"
              android:theme="@style/Theme"
              android:launchMode="singleInstance"
              android:stateNotNeeded="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.HOME"/>
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

HomeScreen アクティビティには、次のメソッドが含まれています。

protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if (Intent.ACTION_MAIN.equals(intent.getAction())) {
        getWindow().closeAllPanels();
    }
}
public void onDestroy() {
    super.onDestroy();
}

また、HomeScreen アクティビティには、アプリ全体を効果的に終了するボタンがあります。関連するコードは次のとおりです。

public void exitApp(View view){
    this.finish();
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

つまり、基本的に私が望むのは、初めて HomeScreen アクティビティに到達したときに、デフォルトのホーム画面を選択するように指示するプロンプトが表示されることです (これは、ホーム ボタンを押さない限り発生しません。すぐに発生することを望みます)アクティビティが開始されたとき)。これをデフォルトのホーム画面として設定すると、機能しますが、基本的にしか機能しません。ホーム ボタンを押すと、(当然のことながら) このアクティビティに戻りますが、[終了] ボタンをタップしても、私が望んでいた標準のホーム ランチャーに戻りません。

4

1 に答える 1

0

まず、あなたのマニフェストは問題ありませんが、あなたはアクティビティを終了したいと考えて
いますよね? あなたのコードでは、それを終了してからもう一度開始してください.. exitApp

ホーム ボタンを押すと、このアクティビティに戻りますが (そうあるべきです)、
[終了] ボタンをタップしても、必要なストック ランチャーに戻りません

ユーザーが別の家庭用代替アプリ (例: Go Launcher Ex)をインストールしていて、ユーザーがアプリをデフォルトにする前にデフォルトとして
設定していた場合、 Go Launcher Ex に戻りたいと思いませんか? はいと思います。Go Launcher

これは部分的に可能
です。できることは、ランチャーを終了した後に使用するホームランチャーをユーザーに促すこと
です :

import android.content.pm.PackageManager;

public void exitApp()
{
    //call this method to exit _CLEARLY_,
    //and prompt the user which launcher to use next

    //clear the default for your app (to show the prompt when exiting)
    final PackageManager pm = getPackageManager();
    pm.clearPackagePreferredActivities(getApplicationContext().getPackageName());

    //exit _CLEARLY_
    //calling finish(); would be ok also,
    //but there would stay a 'zombie' in the dalvik cache
    //and 'zombies' only use up your memory, so kill your entire app:
    android.os.Process.killProcess(android.os.Process.myPid());
}

つまり、基本的に私が望むのは、初めて HomeScreen アクティビティに到達したときに、 デフォルトのホーム画面
を選択するように指示するプロンプトが表示されることです(これは、ホーム ボタンを押さない限り発生しません。すぐに発生することを望みます)アクティビティが開始されたとき)。

でこの関数を呼び出すとonCreate()
次のようにインテントを呼び出してホームボタンの押下をシミュレートしIntent.CATEGORY_HOMEます。

public void showPrompt()
{
    Intent i = new Intent(Intent.ACTION_MAIN);
    i.addCategory(Intent.CATEGORY_HOME);
    startActivity(i);
}

これがあなたが望んでいたものであることを願っています

于 2013-06-24T18:29:08.380 に答える