4

次の意図を使用して、ホーム画面/ランチャーの選択ダイアログをプログラムで起動しようとしています:

Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(Intent.createChooser(i, "Set My HomeScreen as default"));

残念ながら、インストールされているホーム画面ランチャーのリストとともに表示されるダイアログには、ダイアログの下部にある [このアクションにデフォルトで使用する] オプションがありません。次の図は、その外観を示しています。

ホーム画面

興味深いことに、上記の選択ダイアログからホーム画面を選択した後、その画面からホームボタンを押すと、Android は同様のダイアログを自動的に表示します。実際には、ダイアログの下部にこのオプションをデフォルトで使用するオプションがあります。これがどのように見えるかです:

ホーム画面セレクター

上記のコードの何が問題なのか、私にはまったくわかりません。自分で見つけられないばかげた間違いに違いありません。

誰かが光を当てることができれば、それは大きな助けになります。

ありがとう

4

2 に答える 2

3

createChooser()「このアクションのデフォルト」チェックボックスを生成しません。チェックボックスが必要な場合は、代わりにインテントをstartActivityForResult()

于 2012-05-22T21:02:20.380 に答える
1

ICS で行う方法は次のとおりです。

final PackageManager packageManager = this.getPackageManager();
ComponentName componentName = new ComponentName(this, MainActivity.class);
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

Intent selector = new Intent(Intent.ACTION_MAIN);
selector.addCategory(Intent.CATEGORY_HOME);
startActivity(selector);
于 2014-06-04T15:58:34.723 に答える