0

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?

Antwort

1

Ich möchte einige Benachrichtigung erhalten, wenn app durch diese Verknüpfung geöffnet

Ihre SplashActivity gestartet. Wenn Sie diese Aktivität für etwas anderes verwenden, und Sie die beiden unterscheiden möchten, lassen Sie Ihre Verknüpfung nicht auf SplashActivity gehen, sondern stattdessen auf etwas anderes.

Wenn ich App mit dieser Verknüpfung öffnen, gibt BroadcastReceiver mir nichts.

Korrekt.

Erstens, es gibt keine Anforderung, dass ein Home-Bildschirm keine Aufmerksamkeit auf Ihre INSTALL_SHORTCUT Anfrage.

Zweitens ist es nicht erforderlich, dass ein Startbildschirm irgendeine Art von Broadcast sendet, wenn der Benutzer auf diese Verknüpfung klickt. Alles, was erwartet wird, ist, dass der Startbildschirm die Aktivität startet, die mit dieser Verknüpfung verknüpft ist.

+0

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? –

+1

@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

+0

nein, es funktioniert nicht für mich. Ich änderte Filter, aber BroadcastReceiver kann Abkürzung nicht feststellen Intent –