2012-07-30 7 views

Antwort

9

Dies ist, wie ich es tat:

ich meine Haupttätigkeit geändert keine Intent-Filter zu haben:

<activity 
      android:name=".ParentTrap" 
      android:label="@string/title_activity_parent_trap" 
      android:theme="@android:style/Theme.Holo" > 
     </activity> 

ich dann einen Rundfunkempfänger mit der Absicht Filteraktion gemacht: android.provider.Telephony.SECRET_CODE

Ich fügte dann Daten hinzu. Die ganze Sache ist unten:

<receiver android:name=".ParentTrap$Launch" > 
      <intent-filter> 
       <action android:name="android.provider.Telephony.SECRET_CODE" /> 

       <data 
        android:host="(secret code)" 
        android:scheme="android_secret_code" /> 
      </intent-filter> 
     </receiver> 

Ist das erledigt, eine Klasse machen (Ich habe die Launch-Klasse in meiner Hauptklasse, Rundfunkempfänger erstreckt), dann in der OnReceive Klasse, feuert eine Absicht, die Aktivität zu starten.

Wenn Sie dann *#*#(secret code)#*#* in den Dialer eingeben, wird die App gestartet.

+0

Dies funktioniert nicht für mich auf Samsung Galaxy Note GT-N7000 mit Android 4.1.2. Müssen wir etwas anderes tun, damit es funktioniert? – Manish

+0

@Manish war die App geöffnet, bevor Sie es versuchten? –

+0

Ja, ich habe eine leere Aktivität erstellt. Bitte beachten Sie meine Frage dazu: http://stackoverflow.com/questions/18901339/android-provider-telephony-secret-code-reserved-for-system-apps und bitte helfen Sie, wenn Sie können. – Manish

6

erstellen Rundfunkempfänger mit dieser Aktion:

In Extras, die Sie the dialed number finden.

Bearbeiten: Hier ist tutorial für Broadcast-Empfänger.

+0

Nicht so ... Aber es muss vielleicht tun. –

+0

Ich glaube nicht, dass Sie in der Lage sind, die einfache Dial-Aktion abzufangen, ohne tatsächlich anzurufen ... – eftokay83

+0

Ah, ich sprach über die * # * # Geheimcodes, aber ich habe herausgefunden, wie man sie verwendet :) –

0

Insted broadcast receiver vielleicht sollten Sie sich für die richtige Aktivität Absicht registrieren. Zum Beispiel: Intent.ACTION_CALL sieht aus wie. Problem ist, wie Absichten gefiltert werden, um nur diese eine spezifische Zahl zu erhalten. Ich vermute, dass es so aussehen würde (ich Gesing auf das, was ich in der Dokumentation gefunden habe):

<action name=".YourAction"> 
    <intent-filter . . . > 
     <action android:name="android.intent.action.CALL" /> 
     <!-- data is crutial here, you have to figuire it out exacly yourself --> 
     <data android:scheme="tel" android:path="yourSpecyficSecretCode" /> 
    </intent-filter> 
</action> 

Blick here und here. Verwenden Sie LogCat, um zu sehen, was genau beabsichtigt, dann können Sie dies richtig filtern.

Verwandte Themen