2010-07-27 9 views
6

Ich möchte überprüfen, ob meine Anwendung als Standardanwendung für die Intents eingestellt ist, die ich in meiner App bearbeite.Wie überprüft man, ob meine Anwendung standardmäßig oder nicht in Android eingestellt ist?

Als Beispiel ff mehr als eine Anwendung unterstützt das Öffnen eines bestimmten Dateiformats. Ich muss meine Anwendung als Standardanwendung aus meinem Code machen. Wie es möglich ist, meine Anwendung zu einem Standard (aus dem Code) zu machen? Kann mir jemand helfen?

Zumindest möchte ich dies beim Start meiner App überprüfen und den Benutzer umleiten, um einige Informationen auszufüllen, wenn meine App nicht als Standard auf dem Gerät eingestellt ist.

+0

Bitte definieren Sie, was Sie mit "ist ein Standard" meinen. – CommonsWare

+1

Meinen Sie, als hätten Sie zwei verschiedene Apps installiert, die dieselbe Aktivität ausführen? Die eingebaute "Messaging" und "Handcent SMS" für den Umgang mit Short-Messaging-Diensten? Wenn der Benutzer eine Standard-App festgelegt hat - möchten Sie wissen, ob Ihre Ihre ist oder nicht? Habe ich deine Frage richtig verstanden? –

+0

Ich lade ICS-Datei von meiner Anwendung.Eine andere Anwendung kann auch die ics-Datei herunterladen. Wenn der Benutzer versucht, die Datei zu öffnen, wird das Android-Gerät die mögliche Anwendung aufführen. Wenn der Benutzer meine Anwendung auswählt, um die ics-Datei zu diesem Zeitpunkt zu öffnen, werde ich einige Details vom Benutzer (über den Benutzer) erhalten. Wenn sie meine Anwendung als Standard wählen, werde ich nicht die Details über den Benutzer fragen. Für das ich meine Anwendung überprüfen muss, ist eine Standardanwendung oder nicht. Wenn es Standard ist, werde ich die Datei direkt öffnen, sonst möchte ich die Details erhalten über Benutzer. – SRS

Antwort

3

Soweit ich weiß, ist das nicht möglich. Dieser Dialog wird vom System gehandhabt - Ihre App wird nur gestartet, wenn der Benutzer Ihre App aus der Liste auswählt.

Ein solches Verhalten würde die Fähigkeit des Benutzers beeinträchtigen, seine Standardanwendungen zu steuern, und aus technischer Sicht würde dies bedeuten, dass jeder Vorgang in der Liste bei jedem Auftreten einer solchen Liste seinen Speicher zuordnen müsste .

0

Sie diese Methode verwenden könnte:

public static boolean isOurAppDefault(Context context) { 
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com")); 
    ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(browserIntent,PackageManager.MATCH_DEFAULT_ONLY); 
    String defaultBrowserPkg = null; 
    if (resolveInfo != null) { 
     if (resolveInfo.activityInfo != null) { 
      defaultBrowserPkg = resolveInfo.activityInfo.packageName; 
     } 
    } 
    return TextUtils.equals(context.getPackageName(), defaultBrowserPkg); 
} 

für einige Editor oder Browser Es ist tatsächlich. In anderen Fällen verwenden Sie verschiedene Uri-Daten für die Absicht.

Verwandte Themen