Ich füge Verknüpfung zu meiner App in Launcher wie folgt.Android App Shortcut Benachrichtigung
public void create(String name, Bitmap bitmap, int appID) {
final Intent shortcutIntent = new Intent(context, SplashActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);
final Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra("duplicate", false);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap);
intent.putExtra(Intent.EXTRA_TEXT, appID);
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
context.sendBroadcast(intent);
}
Ich möchte einige Benachrichtigung erhalten, wenn app durch diese Verknüpfung und bekommen einige Parameter von ihm (Verknüpfungsnamen und id) geöffnet. Versucht mit BroadcastReceiver, aber es funktioniert nur, wenn Verknüpfung erstellt wird. Wenn ich App mit dieser Verknüpfung öffne, gibt BroadcastReceiver mir nichts.
BroadcastReceiver rec = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "intent received");
if (intent.hasExtra(Intent.EXTRA_TEXT)) {
Log.d(TAG, "Shortcut ID: " + intent.getIntExtra(Intent.EXTRA_TEXT, 0));
Log.d(TAG, "Shortcut name: " + intent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME));
}
}
};
IntentFilter filter = new IntentFilter("com.android.launcher.action.INSTALL_SHORTCUT");
context.registerReceiver(rec, filter);
Wie werde ich benachrichtigt?
Eigentlich möchte ich ein paar Verknüpfungen verwenden, um die gleiche Aktivität zu starten (keine Sorge, es ist für den internen Gebrauch, nicht für Google Play). SplashActivity wird basierend auf der Shortcut-ID den Deizid starten. Ist es möglich zu tun? –
@AndreyRankov: Sie können versuchen, Extras auf "shortcurtainIntent" zu setzen. Ich würde nicht darauf zählen, diese in "SplashActivity" zu bekommen, aber es könnte in einigen Fällen funktionieren. – CommonsWare
nein, es funktioniert nicht für mich. Ich änderte Filter, aber BroadcastReceiver kann Abkürzung nicht feststellen Intent –