Beiträge von hr3

    Hallo,
    bei WIFI bekomme ich wie gewünscht auch bei der Trennung einer Verbindung per Intent eine Info.
    Das möchte ich gern auch für Bluetooth und NFC erreichen.
    Bei BT sollte das laut den gefundenen Hinweisen innerhalb von 2 Sekunden geschehen. Aber auch nach Minuten passiert nichts, wenn die Kopplung von der Gegenstelle aufgehoben bzw. BT an dieser deaktiviert wird. Auch die System-BT-Funktion unter Einstellungen zeigt diese Verbindung dauerhaft unverändert als Gekopplt an.
    Bei NFC bekomme ich nur eine Info, wenn der Kontakt zu einem NFC-TAG hergestellt wird. Ich sehe keine Chance zu überprüfen ob dieser noch besteht bzw. eine Info zu bekommen, wenn er getrennt wird. Im Moment habe ich keine Möglichkeit zu überprüfen, wie sich das zwischen zwei NFC-fähigen Geräten verhält.
    Ich hab es an mehreren Geräten mit unterschiedlichen Android-Versionen probiert. Ist das so gewollt oder mache ich einen Fehler?

    Ich bekomme das in der Android-App nicht zum laufen. Sie bricht immer bei der Anweisung "store.connect(...)" ab. Als Java-Application funktioniert es. Habe schon diverse Beispiele probiert, alle mit dem gleichen Ergebnis.


    Senden von Mails über JavaMail funktioniert vom Smartphone einwandfrei.

    Java
    ...
    private Session session;
    private Store store;
    Properties props = System.getProperties();
    try {
    session = Session.getDefaultInstance(props, null);
    store = session.getStore("imaps");
    store.connect("imap.gmail.com", "...user...", "...password...");
    ...


    teilweise ergänzt um

    Java
    props.setProperty("mail.store.protocol", "imaps");
    props.setProperty("mail.imaps.host", "imap.gmail.com");
    props.setProperty("mail.imaps.port", "993");


    bzw.

    Java
    properties.put(String.format("mail.%s.host", protocol), host);
    properties.put(String.format("mail.%s.port", protocol), port);
    properties.setProperty(String.format("mail.%s.socketFactory.class", protocol),"javax.net.ssl.SSLSocketFactory");
    properties.setProperty(String.format("mail.%s.socketFactory.fallback", protocol),"false");
    properties.setProperty(String.format("mail.%s.socketFactory.port", protocol),String.valueOf(port));


    In der Java-Umgebung ist die javax.mail.jar und der Android-Umgebung sind dafür activation, additionnal und mail.jar installiert. In AndroidManifest ist <uses-permission android:name="android.permission.INTERNET"/> eingetragen.

    Code
    02-20 13:47:39.882: E/readMail(22273): Not connected 
    02-20 13:47:39.882: E/readMail(22273): java.lang.IllegalStateException: Not connected 
    02-20 13:47:39.882: E/readMail(22273): at com.sun.mail.imap.IMAPStore.checkConnected(IMAPStore.java:1493) 
    02-20 13:47:39.882: E/readMail(22273): at com.sun.mail.imap.IMAPStore.getFolder(IMAPStore.java:1324)


    bzw.

    Code
    02-19 15:52:48.723: W/System.err(31147): javax.mail.MessagingException: Couldn't connect using  "javax.net.ssl.SSLSocketFactory" socket factory to host, port: imap.googlemail.com, 993;


    Ich entwickle unter eclipse und API19, habe aber auch andere Versionen und unterschiedliche Smartphones probiert. Jetzt habe ich keine Idee mehr. Bin dankbar für ein funktionsfähiges Beispiel.

    onApplyThema() sagt mir noch nichts, schau ich mir aber an.


    Ich hab für den Test erst einmal Standard-Themes verwendet und das auf zwei Geräten unter 2.3.3 und 4.4.4 und anderen Versionen auf dem Emulator geprüft.


    Es betrift immer das Erscheinungsbild der gesamten Anzeige (auch wenn z.B. mehrere preferences.xml hintereinander aufgerufen werden).


    Ich hab es nur mit
    addPreferencesFromResource und
    loadHeadersFromResource
    aus
    PreferenceActivity und
    PreferenceFragment
    probiert.


    Ist sicher auch nichts weltbewegendes. Auf der anderen Seite, wenn es eine einfache Lösung dafür gäbe, wäre es schon schön wenn alle Anzeigen einer App den gleichen Style hätten.

    Erst einmal danke für deine Rückmeldung. Mit dieser Art von Antwort kann ich etwas anfangen. Zumindest weiß ich jetzt, dass ich an dieser Stelle vermutlich nichts übersehen habe, sondern das Maximum des Vorhandenen ausgereizt habe. Hatte zwar mehr erhofft, aber was nicht ist, das ist eben nicht.


    Zu meiner Art der Fragestellung. Nein ich bin nicht unter Druck, ganz im Gegenteil. Alles was ich mache ist aus eigenem Antrieb und nur zu meiner eigenen Wissensbefriedigung und ich hatte zumindest das Gefühl mich schon sehr intensiv mit der Thematik beschäftigt zu haben. Das Ergebnis scheint es ja auch zu bestätigen. Aber woher weiß ein einsamer Kämpfer, dass er bereits am Ziel angekommen ist, wenn er den Entsprechenden Hinweis nicht erkennt.


    Ich sehe nicht, dass diese Fragen besser in einem Beitrag untergebracht gewesen wären, da sie zwar einen gemeinsamen Ausgangspunkt haben, aber klar abzugrenzen sind. Es spielt immer die Erfahrung mit. Ich hatte in der Vergangenheit an anderer Stelle zu anderen Themen oft den Eindruck, dass ich keine Rückmeldung bekommen habe, weil ich zu ausfühlich erlautert hatte, was ich suche, was ich bereits für Erkenntnisse habe und was ich ausschließe. Das entspricht auch mehr meinem Naturell , schien aber häufig andere abzuschrecken oder zu überfordern. Deswegen kurz und prägnant.


    Auch du hast deine Erfahrungen gemacht die deine Reaktionen prägen. Hab ich verstanden.


    Versteh bitte auch mich. Die erste Rückmeldung die ich von dir erhalten habe. lautete:
    Was hast Du versucht, um das herauszufinden?
    Ist Dir einmal der Gedanke gekommen, dass ...
    Da bin ich möglicherweise etwas dünnhäutig und hab mich auf die gleiche Tonlage eingeschossen (und auch dein Avatar wirkt auf mich nicht unbedingt deeskallierend).


    Eventuell finden wir ja noch eine gemeinsame Sprache, falls ich doch noch mal selbstverständlich erst nach ausreichender eigener Recherche eine Frage mit anderen erläutern möchte. ;)

    Ich habe keine Angst davor, möchte jedoch soviel wie möglich von dem verwenden, was im Standard schon vorhanden ist. Warum das Rad immer wieder neu erfinden. Programmieren kann ich genug in der Anwendung.


    Hier war ja nur die Frage, was kann der Standard und was hab ich eventuell noch nicht durchschaut.


    Ich hatte da vermutlich etwas mehr erwartet, als möglich zu sein scheint. Aber wenn z.B. für Slider schon das Schlüsselwort android.max benutzt werden kann, wäre es nach meinem Verständnis ein leichtes dieses auch für andere numerische Definitionen zu verwenden und ggf. auch min dazu zu erfinden.


    Kein Problem, werde mir bei Gelegenheit eine eigene Klasse schreiben, die aus einer Settings-Definitions-Tabelle einen Editor generiert, der alles das abgeckt, um vermutlich direkt danach festzustellen, dass hunderte (tausende) andere das bereits ähnlich gelöst haben.

    Es gibt neben

    SQL
    PreferenceManager.getDefaultSharedPreferences(context1).getString (key,"");

    bzw.

    SQL
    editor.putString(key,value);

    auch die entsprechenden Aufrufe für die speziellen Datentypen (boolean,float,int,long,Set<String>. All diese kann ich aus meiner Anwendung problemlos verwenden und mit z.B. getBoolean auch auf Begriffe zugreifen, die in der preference.xml definiert und über den daraus generierte Standard-Editor bearbeitet wurden. Ähnliches habe ich auch für die numerischen Typen erwartet. Diese werden vom Editor jedoch bislang als String abgelegt und auch so erwartet und sind damit (ohne Konvertierung) nicht kompatibel zu den Zugriffen aus der Anwendung. Somit gehe ich mal davon aus, dass alle preferences mit gleicher Logik an gleicher Stelle gespeichert sind.


    Beispiel: Ich möchte einen numerischen Wert in der preferences.xml als Integer (ggf. min=-7, max=23) definieren, über Setings bearbeiten und in der Anwendung direkt per getInt darauf zugreifen.


    Bei boolean funktioniert das ja bereits entsprechend.

    Ich setzte

    Java
    setTheme(R.style.AppThemeXXX);

    gleich am Anfang der Klasse, in der Regel direkt nach

    Java
    super.onCreate(savedInstanceState);

    Das funktioniert auch für alle anderen Anzeigen. Nicht für (vereinfachtes Beispiel)

    Java
    ...
    public class PreferenceActivity_ extends PreferenceActivity {
    
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    			setTheme(R.style.AppThemeXXX);	
    			addPreferencesFromResource(R.xml.preferences);
    ...


    Ja, habe ich sogar schon probiert!

    Ich setzte während der Ausführung dynamisch den Style. Funktioniert,
    außer in den PreferenceActivity und PreferenzFragment - Klassen.



    Abhängig von Kombination von Baisis-Einstellung und neu eingestellten
    Style bleibt hier der alte Style erhalten, bzw. wird z.B. bei
    "android:Theme.Holo.Light" (API 10 -19) dann eine (kaum leserliche)
    graue Schrift auf schwarzem Grund (teilweise in grau unterlegten
    Überschrifts-Blöcken) angezeigt.



    Warum ist die Änderung (nur) bei diesen Klassen nicht möglich, bzw. gibt es dafür eine Lösung?

    Ich nutze die auf Basis der preferences-xml generierte Standard-Edit-Funktion für die User-Settings und möchte für numerische Infos (android:inputType="number","numberDecimal","numberSigned") in einigen Fällen die Eingaben gern auch auf Gültigkeit prüfen lassen.
    Z.B. wird android:max="123" so nicht akzeptiert, anscheinend nur für Slider.
    Ist das möglich und wie zu definieren?

    Wie sind diese Datentypen in der preference.xml (für die
    Standard-Edit-Funktion addPreferencesFromResource aus PreferenceFragment
    bzw. PreferenceActivity) zu definieren?


    Mit Boolean und String, inputType und defaultValue, EditText-,
    CheckBox-, Ringtone- und ListPreference bin ich vertraut. Aber auch
    numerische Informationen werden dabei lediglich in Strings gespeichert.


    Es gibt PUT- und GET-Methoden speziell für diese Typen, die aus der
    Anwendung heraus problemlos funktionieren. Nur sind diese so halt nicht
    kompatibel zum Editor und umgekehrt.