Android Dateien senden von assets Ordner?

bruce85

Bekanntes Mitglied
Hallo,
ich versuche schon seit gestern Dateien per Email zu senden, leider ohne erfolg.

Alles was Google mir geliefert hat, funktionierte auch nicht:
Code:
Datei kann nicht angehängt werden.
Dateigröße beträgt 0 Byte.

Java:
ArrayList<Uri> audioUri = new ArrayList<Uri>();
	                	for (int i = checkedItems.size() - 1; i >= 0; i--) {
	                        if (checkedItems.valueAt(i)) {
	                        	pos = checkedItems.keyAt(i);
	                        	Uri uri=Uri.parse(getAssets()+"sound/"+sound.get(pos).fileName);
	                        	audioUri.add(uri);
	                        }
	                    }
	                	
	                	
                    	final Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
	                	emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	                	emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, audioUri);
	                	emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Test");
	                	emailIntent.setType("audio/*");
	
	                	startActivity(Intent.createChooser(emailIntent, "Senden via"));

Woran könnte das denn liegen?

Ich habe schon ziemlich viele möglichkeiten versucht, nur können die dateien nie angehängt werden, da sie nicht gefunden wurden, obwohl sie vorhanden sind.

Ich danke euch schonmal für die Hilfe.

Gruss
 
Zuletzt bearbeitet:

buggy84

Bekanntes Mitglied
Soweit ich weiß kann man nicht einfach auf Asset-Dateien zugreifen, weil diese gepackt sind. Ein Zugriff geht nur, indem ich einen Inputstream anlege, die Datei einlese und dann damit weiter arbeite.

Ich hole die Datei, speichere Sie anderweitig ab und arbeite dann mit dieser Kopie weiter.

in etwa sieht das dann so aus:

Code:
AssetManager am = context.getAssets();
InputStream input;
input = am.open("Ziel zu meiner Datei");
File copyFile = new File("Pfad, an den ich die Datei ablegen will");
fos = new FileOutputStream(copyFile);


byte[] buffer = new byte[4096];
					int len;
					while ((len = input.read(buffer)) > 0) {
                        fos.write(buffer, 0, len);
					}

Soweit, ich hoffe das hilft Dir weiter...
 

dzim

Top Contributor
Will der Mail-Intent aber nicht einfach nur eine URI? Auf Assets kann man doch mit einem speziellen File-Schema zugreifen:
file:///android_asset/...
Einen versuch ist es wert, oder?
 

buggy84

Bekanntes Mitglied
Na und das ist genau das, was AFAIK nicht funktioniert. Auf alles andere kann ich so zugreifen, aber mit file:///android_asset/... geht das nicht.
 

dzim

Top Contributor
@buggy84:
Ich vermute, du hast hier ein Verständnis-Problem:
Uri uri=Uri.parse(getAssets()+"sound/"+sound.get(pos).fileName);
ist nicht das Selbe wie
Uri uri=Uri.parse("file:///android_asset/sound/"+sound.get(pos).fileName);

Warum?
#getAssets() (aus derContext-Klasse) gibt dir eine Instanz von AssetManager zurück.
D.h. der AssetManager kann dir einen InputStream oder einen (Asset)FileDescriptor erzeugen, aber nicht per se eine URI.

Ansonsten aber denke ich, wenn das alles nichts bringt, wird der TO nicht um die von dir, buggy84, beschriebene Lösung herum kommen, und die Daten im Storage zwischenzuspeichern. Dann würde ich bei der URI, die man dem Intent immer noch geben muss, aber ein File-Objekt erzeugen und Uri#fromFile(File f) nutzen, anstelle der von Hand gestrickten Variante, oder?
 

buggy84

Bekanntes Mitglied
Ich verstehe den Unterschied, nur leider, das gebe ich offen zu, hab ich das in der Hast falsch gelesen, bzw. überlesen.

Wenn ich ein File-Objekt erzeugt habe, bietet es sich an, die URI vom Objekt zu erstellen, ganz klar.
 

bruce85

Bekanntes Mitglied
Vielen Dank für die antworten.
Genau das Problem hatte ich, das ich nicht auf assets Ordner zugreifen kann
Ich habe eine lösung gesucht, das ohne Input-Stream möglich ist.
Da man nicht so einfach darauf zugreifen kann, bleibt mir nichts anderes übrig, als das mit Input-Stream zu lösen und vielen Dank für die Hilfen.

Gruss
 

buggy84

Bekanntes Mitglied
Naja das ist ja jetzt nicht mehr die Hürde, die Hälfte hast Du quasi schon, den Rest bringt Du auch noch her. Viel Erfolg!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Meeresgott Android Best Practices zum Laden von Dateien Android & Cross-Platform Mobile Apps 0
V Kennt jemand ein Programm , um .DEX Dateien zu öffnen, bearbeiten und wieder speichern? Android & Cross-Platform Mobile Apps 2
J Android String in andere Java-Dateien überführen Android & Cross-Platform Mobile Apps 1
B Dateien Speichern Android & Cross-Platform Mobile Apps 6
T Android Wie kann man bei WebView Dateien hochladen? Android & Cross-Platform Mobile Apps 6
domjos1994 Große Dateien aus Soap-Objekt Android & Cross-Platform Mobile Apps 10
F Android Effizientes Laden von Dateien Android & Cross-Platform Mobile Apps 8
Anfänger2011 Speichern von bereits gefüllten Dateien Android & Cross-Platform Mobile Apps 8
U MediPlayer: Wave Dateien aus "Music"-Ordner abspielen Android & Cross-Platform Mobile Apps 3
M Dateien in apk z.B. Texturdaten Android & Cross-Platform Mobile Apps 1
G Android Einbindung von externen Dateien in Eclipse Projekt Android & Cross-Platform Mobile Apps 8
@ .jar Dateien auf Android Gerät (Motorola RAZR XT910) Android & Cross-Platform Mobile Apps 6
P dateien laden nur aus jar? Android & Cross-Platform Mobile Apps 7
T Kann man JAD bzw. JAR Dateien auch auf meiner HP öffnen? Android & Cross-Platform Mobile Apps 2
G Auf vorhandene Dateien zugreifen Android & Cross-Platform Mobile Apps 6
B Android Text von Android zu PC senden? Android & Cross-Platform Mobile Apps 5
M Notification nicht mehr senden nachdem sie geklickt wurde Android & Cross-Platform Mobile Apps 0
B Android Mehrer Hexwerte über outputstream senden, und empfangen (Bluetoth) Android & Cross-Platform Mobile Apps 9
G String an einen php Script senden Android & Cross-Platform Mobile Apps 8
B Senden via Dialog? Android & Cross-Platform Mobile Apps 6
G Datei erzeugen, per E-Mail senden Android & Cross-Platform Mobile Apps 5
M Inhalt eines Eingabefeldes an einen Server senden? Android & Cross-Platform Mobile Apps 9
F Pc Screenshot an iPhone senden Android & Cross-Platform Mobile Apps 2
T Android Netzwerk - Objekte senden Android & Cross-Platform Mobile Apps 9
S DTMF-Töne über MIDlet senden Android & Cross-Platform Mobile Apps 3
G SMS senden - zulassen oder nicht Android & Cross-Platform Mobile Apps 3
X Textdatei aus Assets lesen Android & Cross-Platform Mobile Apps 5

Ähnliche Java Themen

Neue Themen


Oben