私がやりたいことは次のとおりです。
- ユーザーは、システムで使用可能なすべてのショートカットのリストからショートカットを選択します。
- 関連情報が保存されます。
- ユーザーがアクションを実行すると、ホーム画面のアイコンのように、選択したショートカットが実行されます。
これまでのところ、を使用して、すべてのショートカットをリストに入力して表示することができ
getPackageManager().queryIntentActivities(new Intent(Intent.ACTION_CREATE_SHORTCUT), 0);
ます。ショートカットを選択するとACTION_CREATE_SHORTCUT
、ショートカットパラメータをカスタマイズするインテントを開始します。これにより、適切なUIが表示され、機能しているように見えます。このコードを使用してインテントを開始します。
ActivityInfo activity = resolveInfo.activityInfo;
ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name);
Intent i = new Intent(Intent.ACTION_CREATE_SHORTCUT);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
i.setComponent(name);
startActivityForResult(i, 1);
これが私のonActivityResultです:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode==1 && resultCode == RESULT_OK) {
try {
startActivity((Intent) data.getExtras().get(Intent.EXTRA_SHORTCUT_INTENT));
} catch (Exception e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "Success!!", Toast.LENGTH_LONG).show();
finish();
}else{
Toast.makeText(getApplicationContext(), "Fail: "+resultCode+" "+resultCode, Toast.LENGTH_LONG).show();
}
super.onActivityResult(requestCode, resultCode, data);
}
ここで問題となるのは、requestCode = 0、resultCode = 0のonActivityResult
直後で、データがない場合は常にトリガーされることです。アクティビティが実際に終了startActivityForResult
したときにトリガーされません。ACTION_CREATE_SHORTCUT
本当にわかりません。アクティビティが終了した後、送信したrequestCodeとデータインテントを返す必要があると思います。これには、実際にショートカットを開始するために何らかのIntent.EXTRA_SHORTCUT_INTENT
方法で使用できるデータが含まれています。
質問の2番目の部分は、ユーザーが選択したショートカットに必要な情報を実際にどのように保存するかですSharedPreferences
。これにより、後で特定のパラメーターを使用してこのショートカットを実行できます。この例は見つかりませんでした。
どんな助けでも大歓迎です!ありがとう!