2016-03-19 2 views
0

Ich verwende das Salesforce SDK (4.1.x) in einer nativen Android-App. Ich verwende die RestClient.sendAsync-Methode, um meine Formulardaten an ein benutzerdefiniertes Objekt zu senden. Dieser Teil funktioniert gut. Jetzt muss ich ein Foto hochladen und anhängen, das vom mobilen Benutzer aufgenommen wurde. Ich sehe, dass RestClient eine uploadFile-Methode hat. Ist das die richtige Methode? Wenn ja, wie verbinde ich die hochgeladene Datei mit den benutzerdefinierten Formulardaten?Wie lade ich Datei mit Salesforce Mobile SDK für Android hoch?

Antwort

1

Ok. Ich habe das herausgefunden. Erstellen Sie zuerst das übergeordnete Objekt (die Hauptformulardaten) mithilfe des folgenden.

In der onSuccess-Methode erhalten Sie die ID des neuen Objekts aus der Antwort. Es gibt viele Beispiele, die zeigen, wie das JSON-Objekt und die ID abgerufen werden. Mit dieser parentId können wir nun den Anhang erstellen. Der Code sieht ungefähr so ​​aus.

private void postImageAsAttachment(String parentId, String title) { 
    Map<String, Object> fields = new HashMap<String, Object>(); 
    fields.put("Name", title); 
    fields.put("ParentId", parentId); 
    fields.put("Body", ImageHelper.getBase64FromImage(mCurrentPhotoPath)); 

    RestRequest request = null; 
    try { 
     request = RestRequest.getRequestForCreate(apiVersion, "Attachment", fields); 
    } catch (Exception ex) { 
     Log.d(TAG, "sendRequest: ", ex); 
     Toast.makeText(MainActivity.this, "The file upload failed: " + ex.toString(), Toast.LENGTH_LONG).show(); 
    } 
    client.sendAsync(request, new RestClient.AsyncRequestCallback() {... 

Ich bin eine einfache Klasse namens Imagehelper verwenden, die einfach die Bilddatei lädt, führt die Bildkomprimierung (falls erforderlich), und Base64 codiert die Bilddaten. Das Ergebnis ist, dass ein "Anlage" -Objekt als Kind des übergeordneten Objekts erstellt wird.

Ich hoffe, das hilft der nächsten Person.

+0

Können Sie mir bitte den vollständigen Code zur Verfügung stellen? – kgandroid

+0

Giving BasicNetwork.performRequest: Unerwarteter Antwortcode 400 für https://ap2.salesforce.com/services/data/v36.0/sobjects/Attachment – kgandroid

+0

Ich werde das heute später herausfinden. Stellen Sie in der Zwischenzeit sicher, dass das Objekt in SF eine Anlage zulässt. Zuerst bekam ich einen Fehler, weil unser Objekt nicht eingerichtet wurde, um einen Anhang zuzulassen. Benutzer erhielten auch Fehler, wenn sie nicht die richtigen Rechte an dem Objekt/der Entität hatten. –