バックグラウンド
Android O には、ショートカットの動作に関するさまざまな変更があります。
https://developer.android.com/preview/behavior-changes.html#as
問題
Android O の最近の変更によると、ショートカットを作成するブロードキャスト インテントは完全に無視されます。
https://developer.android.com/reference/android/content/Intent.html#ACTION_CREATE_SHORTCUT https://developer.android.com/preview/behavior-changes.html#as
com.android.launcher.action.INSTALL_SHORTCUT ブロードキャストは、プライベートな暗黙的なブロードキャストになったため、アプリに影響を与えなくなりました。代わりに、ShortcutManager クラスの requestPinShortcut() メソッドを使用して、アプリのショートカットを作成する必要があります。
これは、たとえば、作成したアプリやユーザーが使用しているランチャーに関係なく、次のコードが機能しなくなることを意味します。
private void addShortcut(@NonNull final Context context) {
Intent intent = new Intent().putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(context, MainActivity.class).setAction(Intent.ACTION_MAIN))
.putExtra(Intent.EXTRA_SHORTCUT_NAME, "HelloWorldShortcut")
.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, ShortcutIconResource.fromContext(context, R.mipmap.ic_launcher))
.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
context.sendBroadcast(intent);
}
現在、Play ストア自体でさえ、アプリへのショートカットの作成に失敗しています (少なくとも現在のバージョンでは: 80795200 )。Google のランチャーに対してさえ、何もしません。
質問
私はこの API の変更に非常に反対していますが (そして、それについてここ、ここ、およびここに書いています)、それを引き続き機能させるにはどうすればよいか知りたいです。
これにはrequestPinShortcutを使用した API があることは知っていますが、これにはアプリが Android O をターゲットにする必要があります。
私の質問は次のとおりです。アプリが Android API 25 をターゲットにしているとします。Android O でショートカットを作成するにはどうすればよいですか? 新しい API のリフレクションを使用することで可能ですか? もしそうなら、どのように?