Wie kann ich das ändern das Verhalten von Android ist der Flugzeug Modus, so dass es nicht schalten Sie die cellular radio?
Habe ich versucht, zu erstellen eine einfache Anwendung, mit der Benutzer anpassen des Verhaltens der Flugzeug-Modus in Android. Die motivation für diese ist von einem verwandten, der hat ein Samsung Faszinieren, und bei anrufen wird er versehentlich aktivieren Sie den Flugmodus. Dies geschieht, wenn er hält das Telefon versehentlich nach unten hält, die Seite macht/lock-Taste, die öffnet einen dialog mit einem Menü für "Silent-Modus", "Flugmodus" und "Power Off". Er versehentlich auslöst, Flugzeug-Modus, indem Sie einen Hauch des Telefons auf seiner Wange. Dies lässt den call und ist ein ärgernis für ihn.
Letztendlich möchte ich eine app erstellen, die verhindert, dass der Funkempfänger ausgeschaltet wird, während der Benutzer ist in der Mitte von einem Anruf. Aber, für einen ersten Durchlauf dachte ich, es machte Sinn, damit der Benutzer manuell auswählen, welche radios würden nicht ausgeschaltet, indem Sie den Flugmodus.
Ich bin nicht suchen zum ändern der Android-source-code oder tun etwas, das würde erfordern, wühlen. Ich bin auf der Suche nach einer Lösung im standard-framework
Mein Erster Versuch, dies zu lösen, wurde eine Anwendung erstellen, ändern würde System.AIRPLANE_MODE_RADIOS
etwa so:
System.putString(getApplication().getContentResolver(), System.AIRPLANE_MODE_RADIOS, "");
Nach den API-docs diese Konstante ist "Eine durch Kommata getrennte Liste von radios, die müssen deaktiviert werden, wenn der Flugzeugmodus aktiviert ist". Es scheint, dass der Flugzeugmodus nicht wirklich verwenden Sie diese Konstante, und es geht weiter zur Arbeit als normal, nachdem die änderung vorgenommen wird.
Mein Nächster Versuch war ein BroadCastReceiver, erhalten die AIRPLANE_MODE Aktion und senden Sie eine Absicht, um es rückgängig zu machen:
Intent am = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", 0);
context.sendBroadcast(am);
Diese nicht ausschalten, Flugmodus, nachdem es aktiviert wurde. Wenn der Benutzer jedoch war in der Mitte eines Anrufs, wird es noch gelöscht werden (was Sinn macht). So, das ist nicht ganz die Lösung für mein problem.
Weiß jemand, wie man verhindern, dass Sie den Flugmodus deaktivieren der Mobilfunk?
- Wäre das nicht eine sinnvolle Lösung sein, zu ändern, die Taste config, damit es nicht aktivieren, Flugzeug-Modus?
- Wäre nicht dieser völlig Niederlage der Zweck der mit einem Flugzeug-Modus auf dem Telefon?
- Ja, das ist genau der Punkt. Dies ist, was der Benutzer wünscht.
- Wenn das möglich ist, dann sicher, es ist eine Lösung. Ich habe nicht ein Samsung Faszinieren, so dass ich weiß nicht, ob die Schaltfläche können Sie oder können nicht neu zugeordnet werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Quelle PhoneApp.java
https://android.googlesource.com/platform/packages/apps/Phone/+/gingerbread-release/src/com/android/phone/PhoneApp.java
Macht deutlich, warum dies nicht funktioniert.
Im Gegensatz zu den wifi-und bluetooth-Implementierungen, die registrieren Sie einen Empfänger für
Intent.ACTION_AIRPLANE_MODE_CHANGED
nur, wenn auf der Liste der Flugzeug-Modus, radios, PhoneApp tut es die ganze Zeit:Dann bedingungslos auf ihn einwirkt:
Angesichts der Zweck des Flugzeug-Modus, ich bin sicher, dies ist eine gewollte Funktion ist und kein bug.
Soweit ich weiß, Sie werden nicht in der Lage, dies zu tun, da die option selbst(Flugzeug-Modus) würde nichts nutzen, wenn 3rd-party-Anwendungen sind in der Lage, Zugriff Türme mit Flugzeug-Modus auf dem Gerät aktiviert.
Wenn der Flugzeug-Modus ist, ausgelöst durch eine physische Taste es ist möglich, überschreiben Sie die Taste drücken Sie die Taste Aktion. Obwohl dies zu erreichen, ich glaube, es erfordert root-Zugriff auf das system.
Aber um die trigger-Flugzeug-Modus von einer physischen Taste ist eine seltsame Idee. WENN Sie die Taste in der software und zwar in den Ruf, vielleicht können Sie erstellen eine Telefon-Anwendung, die nicht über einen Flugzeug-Modus-Taste im Anruf-Bildschirm.
Manche Anwendungen ändern die eigentliche call-in-progress-Bildschirm, und ich weiß, dass die CityID Sache, kam vorinstalliert auf meinem Faszinieren (mir Sagt die Stadt verbunden mit dem area code der die Zahl gewählt oder ankommende) in der Lage war, zu unterbrechen, einen Anruf, bevor es richtig wählte die Nummer, um mir zu sagen, um die software registrieren. Wenn Sie Ihren eigenen machen kann (full-screen) call-in-progress-Ansicht, dann es klingt wie Sie eine Lösung haben. Vielleicht nicht das eleganteste, aber es löst das problem.
Ich weiß, dies ist möglich, da Opera-mini kann, "Vollbild", und Sie können nicht ziehen Sie nach unten die task-Menü von oben; es ist für den Benutzer nicht sichtbar, während im Modus "ganzer Bildschirm".
Ich habe eine app im market namens "Airplane Mode Wi-fi Tool",
es ermöglicht dem Benutzer, dies zu tun, verwenden Sie die folgende Methode:
Standard-RADIOS "der Zelle,bluetooth,wifi" (das sind die radios, die sich ausschalten, wenn das aktivieren des Flugmodus.
Ich glaube nicht, dass Sie in der Lage sein, dies zu tun, da es Flugzeug-Modus überflüssig. Man würde denken, dass es möglich wäre, zu verbieten, Flugzeug-Modus starten, irgendwie. Ich glaube, die Lösung, die Sie suchen, ist eine schlechte Idee, weil es ändert sich eine Anwendung, um es nutzlos, während immer noch so dass es zu laufen. Das problem ist ein design-Problem sollte gelöst werden, indem das Telefon creator. Ich habe keine wirkliche Erfahrung mit android (noch), aber ich könnte mir vorstellen, dass die Art von Funktionalität, die Sie suchen, in der Sie die standard-framework nicht vorhanden sein.
Ich bin sicher, es ist ein vernünftiger Weg, um dieses problem, aber seine unwahrscheinlich, dass Sie in die Richtung, die Sie gehen.