Beiträge von Arin

    Wie gesagt, du nutzt deine layout-file überhaupt nicht. In Zeile 166 setzt du mit setContentView() den Bildschirminhalt deiner Activity. Dieser wird auf deinen erstellten DisplayView gesetzt.
    Würdest du jetzt die Zeile 166 wechseln zu:


    XML
    setContentView(R.layout.activity_main);

    dann würde dein layout auch geladen werden, allerdings nicht dein DisplayView. Ich würde ein View in deine Layout-Datei einfügen, worauf du zeichnen kannst.

    Wenn du <compatible-screens> nicht im Manifest deklarierst, wird es so behandelt, dass alle screens kompatibel sind. Sobald du allerdings <compatible-screens> deklariert hast, werden alle dort nicht definierten screens als inkompatibel eingestuft. Somit macht das einen riesigen Unterschied, ob und wie damit umgegangen wird.

    Einen Link habe ich nicht, aber das wurde im Zusammenhang mit dem Speichern und Verwenden von API-Keys erläutert. Problemstellung war, dass keine dritten Zugriff auf die persönlichen API-Keys der Developer erhält, dieser aber natürlich in der App hinterlegt werden müssen. Im Prinzip stückelst du einfach deine Daten, verschlüsselst sie, hinterlegst sie in unterschiedlichen Methoden und setzt sie bei Bedarf wieder zusammen. Das soll Reverse Engineerern erschweren an die Keys zu kommen. Das ganze lohnt natürlich nur, wenn der Kommunikationsweg zum Server auch ordentlich verschlüsselt wird, damit die Daten nicht dort abgefangen werden können.


    Wenn du einen externen Mail-Anbieter nimmst, hast du das Problem, dass evtl. Probleme aufkommen, wenn der etwas an seinem Server verändert und du nicht schnell genug die App nachbesserst. Oder wenn du gezwungen wirst, dein Passwort zu ändern, weil es irgendeine Sicherheitslücke gibt(bspw. extreme Probleme bei Yahoo). Betreibst du einen eigenen Web- und/oder Mail-Server, kannst du genau so gut auch einen einfachen Web Service programmieren und die Formulare in eine Datenbank eintragen. Evtl. mit Backend für die Firma. Ich würde einem Firmenkunden zum Beispiel keine Lösung anbieten ohne ordentliches Backend, aber das ist natürlich auch anspruchsabhängig.


    Beide Lösungen können sicher oder unsicher umgesetzt werden. Beim ersteren wäre das Problem es Reverse Engineerern es zu erschweren bzw. unmöglich zu machen Daten zu extrahieren, beim zweiten steht und fällt die Sicherheit mit dem Web Service.

    Hi,


    dein Layout findet überhaupt keine Verwendung. Als Bildschirminhalt in Zeile 166 setzt du deine 'Custom View' Zeichenfläche. Was du machen könntest, wäre ein Canvas in deine Layout-Datei einzufügen und dann darauf zu zeichnen. Hier ist noch ein nützlicher Link: Layout Declaration

    Es gibt ein Dokument von Google, in dem empfohlen wurde, sensible Daten wie API-Keys nicht ganzheitlich, sondern verteilt auf verschiedene Methoden im Programmcode zu speichern und erst zum benötigten Zeitpunkt zusammenzusetzen. Kombiniert mit einer Verschlüsselung sollte es Reverse Engineerern nur schwer gelingen brauchbare Daten zu extrahieren.


    Was die Verbindung zum Mail-Server angeht, da könntest du dich in HTTPS und SSL einlesen.


    Ich empfehle allerdings sich mit Web Services auseinanderzusetzen, das ist auch in deinem weiteren Entwicklerleben praktisch unumgänglich.

    Hi,


    also das Manifest sieht erstmal ok aus, vorausgesetzt es ist auch so gewollt, dass ihr keine Tablets oder größere Phablets unterstützen wollt. Der Teil mit den '<compatible-screens>' ist übrigens einfach aus einem Beispiel von der offiziellen Google Seite kopiert.


    Ich nehme mal an, dass der Teil mit den kompatiblen Screens immer noch so im Manifest steht. Es könnte sein, dass die Galaxy S7 Edge Modelle exkludiert werden, weil diese einen größeren Bildschirm als die 'normalen' Modelle besitzen. Diese könnten dann als 'screenSize=large' interpretiert werden, welche in dem Manifest nicht auftauchen. Ist allerdings nur eine Vermutung und ich habe keine Daten dazu gefunden. Um das mal zu testen könntet ihr diesen Block innerhalb von '<compatible-screens>' einfügen:


    XML
    <screen android:screenDensity="ldpi" android:screenSize="large"/>
    <screen android:screenDensity="mdpi" android:screenSize="large"/>
    <screen android:screenDensity="hdpi" android:screenSize="large"/>
    <screen android:screenDensity="xhdpi" android:screenSize="large"/>
    <screen android:screenDensity="xxhdpi" android:screenSize="large"/>
    <screen android:screenDensity="xxxhdpi" android:screenSize="large"/>


    Viele Grüße,
    Q


    Edit: Wenn das funktionieren sollte und ihr das drin lasst, müsst ihr natürlich sicherstellen, dass die App auch auf größeren Bildschirmen ordentlich dargestellt wird.

    Man könnte an der Stelle noch mit geschickter Verschlüsselung der Zugangsdaten arbeiten. Die Ablage der Zugangsdaten dürfte nicht in den Shared Preferences oder einer SQLite-Datenbank auf dem Gerät erfolgen. Die Verbindung zum Mail-Server müsste zudem verschlüsselt sein.


    Die schönere und professionelle Lösung wäre auf jeden Fall der RESTful Web Service. Gibt dazu auch sehr viele gute Artikel im Netz.

    Das wäre auf jeden Fall möglich. Du könntest im Hintergrund eine Mail via SMTP verschicken ohne, dass die normale Mail-App aufgerufen wird.
    Dazu würdest du dann eine Mail über einen externen Mail-Anbieter oder den eigenen Mail-Server verschicken. Baust dir also praktisch einen eigenen schlanken Mail Client.


    Wenn man das wirklich ordentlich gestalten will wäre natürlich das eintragen in eine Datenbank via Web Service + ordentliche Ausgabe für die Firma die schönere Wahl. Aber ich kenne ja auch deren gestellte Ansprüche nicht.

    Wie willst du das Formular denn übersenden und was für ein Format hätte das? Denkbar wäre natürlich das ausgefüllte Formular einfach per E-Mail zu versenden. Eine schönere Möglichkeit wäre, das ganze mittels HTTP-Parser und einem RESTful Web Service aufzunehmen. Falls die Firma bereits so ein Formular auf deren Internetseite hat, kannst du es auch darüber direkt eintragen.

    Einen Link kann ich dir zwar nicht geben, aber die Modellnummern sind abhängig vom verbauten Prozessor und dem Carrier(Mobilfunkanbieter). Beim S7 ist es bspw. so, dass mal ein Snapdragon Prozessor und mal ein Exynos verbaut wurde.


    Wenn du Zugriff auf Source Code und Manifest hast, könntest du einen Teil des Manifestes hier posten und wir gucken mal. Wenn du nur die APK hast, muss eh der Entwickler nachbessern

    Da gibts mehrere Möglichkeiten, je nachdem wie die App aufgebaut ist. Wenn das nur für die gleiche Activity wichtig ist, könntest du die Zufallszahl in eine List<int> eintragen und überprüfen ob die nächste schon enthalten ist(mit Liste.contain(zufallszahl))).
    Falls das Activity übergreifend stattfinden muss, wäre die einfachste Möglichkeit die Zufallszahlen in Shared Preferences als CSV zu schreiben und wieder auszulesen, in eine Liste zu konvertieren und wieder checken ob die Zahl schon vorhanden ist.