String als Datei (eigene Dateiendung) sharen

  • Antworten:12
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 5

09.08.2018, 15:34:15 via Website

Hallo zusammen,

ich möchte gerne aus meiner App einen String in meinem eigenen Dateiformat versenden. Zum Beispiel:
String name = "Johann";
Wenn ich diese Settings dann aus meiner App teilen möchte, soll eine Datei mit meiner endung geteilt werden.
z.b. testDatei.meineEndung

Die App soll dann beim Empfänger, beim Doppelklick auf die Datei, reagieren.
Es sollen Einstellungen geteilt werden können.
Das möchte ich machen ohne wirklich eine datei auf dem Gerät zu speichern und der user soll keine permissions freigeben müssen.

Hoffe einer hat einen Ansatz, bin so ein bisschen am verzweifeln.

danke und gruß
Johann

Diskutiere mit!
  • Forum-Beiträge: 5

09.08.2018, 16:25:22 via Website

Als Ergänzung:
Es ist die gleiche App die ein anderer user auch hat.
Im String steht ein json welches ich dann wieder beim import auslese.

Der gedanke ist das ich meine Einstellungen mit Familie/ Freunde/ etc. teilen kann.
Wie man das halt kennt von Android und IOS, es kommt ein sreen eingeflogen und man kann den Kanal über den man teilen möchte wählen.
Nur soll eine Datei geteilt werden, die eine eindeutige Endung hat ( settingsJohann.eindeutigeEndung)

Habe gelesen das man im Manifest dann sowas eintragen kann:

und die App des Empfängers reagiert beim Doppelklick auf die Datei und importiert hier in dem Fall die Einstellungen.

Hilfreich?
Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

09.08.2018, 17:45:21 via Website

Hallo Johann,

Herzlich wolkommen hier im Forum :)

Das geht in normalfall mittels eines Intent Filters auf die Entsprechende Activity.
Dann kannst du die DAtei anklicken und Android fragt dich, mit welcher App du die Datei öffnen willst:
https://stackoverflow.com/a/2062112

Zudem: Setzte nicht nur auf einen String sondern verpacke die Daten direkt in ein Objekt und schreibe den String mittels Json ode XML raus. Dann bist du flexibel, da neue Datenfelder anzuhängen ohne viel ändern zu müssen. (z.b. mit Google Gson lib)

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 2.901

09.08.2018, 20:01:55 via Website

@Pascal : https://www.android-hilfe.de/forum/android-app-entwicklung.9/string-als-datei-eigene-dateiendung-sharen.884795.html

@Johann

Du müsstest Dich schon entscheiden, wieviel verschiedene Leute Dir auf die Frage antworten sollen.
Das ist auch nicht fair , da die Antworten freiwillig und in der Freizeit getätigt werden.

i.d.R sind die gleichen Leute auf beiden Seiten.

— geändert am 09.08.2018, 20:03:05

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Jokel, Pascal P. und 1 mehr JokelPascal P.Haakon T.
Diskutiere mit!
  • Forum-Beiträge: 5

10.08.2018, 09:18:28 via Website

@all
danke für die Infos, ja werde in Zukunft nur in einem Forum meine Frage stellen.
War mein erster Forumkontakt :)

Danke

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 5

10.08.2018, 10:42:33 via Website

Weiß vielleicht jeamand wie ich eine File dann versenden kann?

String filename = "myfile.txt";
String fileContents = btDevices;
FileOutputStream outputStream;

    File file = new File(mContext.getFilesDir(), filename);

    try {
        outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
        outputStream.write(fileContents.getBytes());
        outputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, file);
sendIntent.setType("text/plain");
this.startActivity(sendIntent);

Danke im Voraus

Hilfreich?
Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

10.08.2018, 11:06:46 via App

Eventuell muss die Datei anderen Apps zugänglich gemacht werden. D.h. die Datei musst du da speichern, wo alle Apps Zugriff haben. Z.b. im ExternalCacheDirectory

Edit: Siehe hier: https://proandroiddev.com/sharing-files-though-intents-are-you-ready-for-nougat-70f7e9294a0b

— geändert am 10.08.2018, 11:08:55

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 480

10.08.2018, 12:10:12 via Website

Hi getFilesDir gibt dir nicht den path zum permission freien app Speicher.
Wird denn die Datei überhaupt erstellt?
Der path /data/data/deinPaketname/file/...

Wie du den path zum app speicher anders erfragen kannst weiß ich nicht. Mache das immer von Hand.

— geändert am 10.08.2018, 16:39:19

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 5

10.08.2018, 12:35:16 via Website

So wie ich verstehe wird im MODE_PRIVATE die Datei im internen Speicher erstellt auf den man gar nciht zugreifen kann, ich weiß aber das die Datei da ist, weil ich aus der auch wieder lesen kann.
Also sie ist da, aber nur für den APP Context, mehr nicht.
Problem ist, dass ich die nicht senden(teilen) kann, da nur meine App berechtigt ist auf diese interne Datei zuzugreifen.

Bitte auch korrigieren, wenn ich da was falsch verstanden habe.

— geändert am 10.08.2018, 12:35:45

Hilfreich?
Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

10.08.2018, 12:56:59 via App

Das ist richtig @Johann

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 480

10.08.2018, 15:53:14 via Website

@Pascal P. Das ist richtig @Johann

Stimmt nicht ganz.
Also wo die Datei erstellt wird hat mit dem Mode "MODE_PRIVATE" nichts zu tun.
Das beeinflusst nur die Dateirechte (Chmode 700) nicht den Speicherbereich
Der wird mit dem Path festgelegt.

Auch wenn du die Datei so in einen von anderen lesbaren Speicherbereich schreibst wird die wohl nicht gelesen werden können.

MODE_WORLD_WRITEABLE
MODE_WORLD_READABLE

macht da mehr sinn.

Wie im anderen Forum schon gesagt, wirst du eine Permission brauchen .
Im Manifest und zu Laufzeit.
ZB. android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

context.getFilesDir() gibt bei mir diesen Path zurück „/data/user/0/dein PackageName /files/“
der ist nur von der App oder mit Root rechten lesbar.

Im Emulator müsstest du die Datei sehen können den da hast du Root rechte.

— geändert am 10.08.2018, 16:38:27

Hilfreich?
Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

10.08.2018, 16:28:50 via App

@Jockel
Danke fürs richtig stellen. Gibts einen Grund das du einen Datei Pfad (oder engl. path) ständig Phat nennst?

— geändert am 10.08.2018, 16:30:04

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 480

10.08.2018, 16:36:04 via Website

Nein Schreibfehler weiss auch nicht warum werde es ändern Danke.

Hilfreich?
Diskutiere mit!

Empfohlene Artikel