Kategorien
Android

Android: Failed to install .apk on device (null)

Bei einer Fehlermeldung wie dieser:

Failed to install xxx.apk on device 'emulator-5554!
 (null)
 Launch canceled!

Kann man durch Neuanlegen eines neuen Virtual Devices (AVD) den Fehler beheben, alles andere hat bei mir nicht funktioniert.

Kategorien
Android Hardware

Samsung Galaxy S4 USB Verbindung und Debugging unter Windows 7

Normalerweise kann das Samsung Galaxy S4 (oder Samsung Galaxy S3 und S2) einfach durch Plug-and-Play unter Windows 7 installiert werden. Leider hat das bei mir nicht funktioniert. Wenn man das Galaxy S4 mit dem Computer verbinden will um mp3s oder Kontakte auf das Handy zu spielen, muss man das Programm Samsung Kies installieren.

Kategorien
Android

FTP Upload mit Android

Einbinden der benötigten Bibliothek von Apache mit Eclipse: Anleitung.

Code:

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.commons.net.ftp.FTPClient;

import android.util.Log;

import de.egraveyard.android.view.ItemUploader;

public class FtpUpload {
    private static final String TAG = ItemUploader.class.getSimpleName();

    String serverAdress = "ftp.lala.de";
    String userName = "ftpUser";
    String password = "lala";
    String serverDirectory = "/android";
    //String localFilePath = "/data/anr/traces.txt";
    //String remoteFileName = "traces2.txt";

    public boolean uploadImage(String localFilePath, String remoteFileName) {
        boolean result = false;

        FTPClient ftpClient = new FTPClient();

        try {

            ftpClient.connect(this.serverAdress);
            ftpClient.login(this.userName, this.password);
            ftpClient.changeWorkingDirectory(this.serverDirectory);
            ftpClient
                    .setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);
        } catch (IOException e) {
            Log.d(TAG,
                    "IOException ftp Client could not be established.controll Login, Server, Pw.");
        }
        Log.d(TAG, "FTP Server Response: " + ftpClient.getReplyString());

        BufferedInputStream buffIn = null;
        try {
            buffIn = new BufferedInputStream(new FileInputStream(localFilePath));
        } catch (FileNotFoundException e) {
            Log.d(TAG,
                    "FileNotFoundException: local File to be uploaded not Found: " + localFilePath);
        }
        ftpClient.enterLocalPassiveMode();

        try {
            result = ftpClient.storeFile(remoteFileName, buffIn);
        } catch (IOException e) {
            Log.d(TAG, "IOException: remote File could not be accessed");
        }
        try {
            buffIn.close();
        } catch (IOException e) {
            Log.d(TAG, "IOException: buffIn.close()");
        }

        try {
            ftpClient.logout();
            ftpClient.disconnect();
        } catch (IOException e) {
            Log.d(TAG, "IOException: ftpClient close/logout");
        }

        return result;
    }
}
Kategorien
Android

Android Quality Management mit Lint in Eclipse

Lint ist ein praktisches Tool um einen groben Überblick über die Qualität eines Android Projektes zu bekommen und unnötigen Code zu filtern.

Installation/Update über Eclipse

Lint kann über die Console oder über Eclipse gestartet werden. Ab Version ADT 16 (aktuell die neuste Version) ist Lint enthalten. Ein Update auf die neuste Version kann duchgeführt werden in Eclipse über: Help/Check for Updates.

Gestartet werden aknn Lint einfach über: Android Tools/Run Lint: Check for Common Errors

 Anwendungsfälle von Lint

Lint kann folgende Fehler recht zuverlässig finden:

  • nicht übersetzte Strings
  • hard kodierte Strings im Quelltext ausserhalb der strings.xml
  • invalides Layout
  • unbenutzte Ressourcen allgemein wie Bilder etc.
  • Accessibility Probleme: fehlende Bildbeschreibungen
  • unperformante Layout-Konstruktionen
  • fehlende Bilder in bestimmten Auflösungen (hdpi, mdpi, ldpi)

Tipps – Projekt startet nicht mehr

Lint kann so konfiguriert werden, dass bestimmte Fehler, wie z.B. fehlende Übersetzungen als Fehler(Error) gewertet werden. Die Konsequenz ist, dass der Compiler die App nicht kompiliert. Dies kann umgegangen werden oder noch verschärft werden über die Lint Einstellungen unter: Window/Preferences/Android/Lint Error Checking. Dort kann die Severity (deutsch: Strenge, Schwere) einer Fehlermeldung eingestellt werden.

Bspw. ist eine „Missing Translation“ am Anfang des Entwicklungsprozesses kein notwendiger Error, kann also auf Warning gesetzt werden.

Kategorien
Android

Android Sqlite Datenbank untersuchen auf dem Test Device

Um sich beim Testen die Datenbank seiner Android Test-App anzuschauen auf dem Test-Handy benötigt man Root-Rechte, ansonsten ist der Ordner data/data auf dem Handy nicht ansehbar. Dazu kann man das Programm SuperOneClick downloaden. Hier ist ein gutes Tutorial zum Rooten des Devices.

Danach kann man mit Eclipse mit dem Plug-in CellObject DevTools mit einer optischen Oberfläche wie in dem Video beschrieben über DDMS auf die Datenbank des Test-Device zugreifen. Für 9$ über Paypal und eine Registrierung kann man sich das Tool CellObject DevTools downloaden.

Mit CellObject DevTools kann man sowohl die SQLite Datenbank auf dem Device als auch die Datenbank im Simulator optisch darstellen lassen in Eclipse.

Nach dem Download einfach in den eclipse/plugin Ordner entpacken und Eclipse neustarten.

Kategorien
Java

Subclipse SVN für Eclipse Installation

  1. Help/Install new Software…
  2. Add Repository: http://subclipse.tigris.org/update_1.8.x
  3. alles auswählen, installieren
  4. Repository Dateien auschecken: File/Import -> SVN/checkout Projects from SVN -> create new repository location -> url eingeben
Kategorien
Amazon MWS

Cloudfront String could not be parsed as XML

If you are using the Cloudfront library for Amazon Advertising API and you get the following error message, contact me I can help you with this issue. I got this error when I tried to retrieve amazon.fr (france) data.

exception 'Exception' with message 'String could not be parsed as XML' in cloudfusion\sdk.class.php:1209
Stack trace:
#0 \sdk.class.php(1209): SimpleXMLElement->__construct('parse_callback('pas_authenticate('ItemLookup', Array)
#3 amazonProductAdvertisingApi.php(233): AmazonPAS->item_lookup('B000091xxx', Array)
#4 amazonProductAdvertisingApi.php(90): amazonProductAdvertisingApi->getAsinData()
#5 amazonProductAdvertisingApi.php(65): amazonProductAdvertisingApi->getResult('FR')
#6 \index.php(248): amazonProductAdvertisingApi->getResults()
#7 {main}EOL#0 cloudfusion\sdk.class.php(1209): SimpleXMLElement->__construct('parse_callback('pas_authenticate('ItemLookup', Array)
#3 amazonProductAdvertisingApi.php(233): AmazonPAS->item_lookup('B000091xxx', Array)
#4 amazonProductAdvertisingApi.php(90): amazonProductAdvertisingApi->getAsinData()
#5 amazonProductAdvertisingApi.php(65): amazonProductAdvertisingApi->getResult('FR')
#6 eansuche\index.php(248): amazonProductAdvertisingApi->getResults()
#7 {main}