String als Datei (eigene Dateiendung) sharen

J

johann1388

Neues Mitglied
Threadstarter
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
 
D

deek

Stammgast
ehrlich gesagt weiß ich nicht was du genau tun möchtest.
Muss es zwingend eine Datei sein, oder geht es um den String?
Willst du den String mit einer anderen App auf dem gleichen Gerät teilen? (Wenn ja, eine andere App von dir oder eine beliebige Dritt-App?)
Willst du den String mit anderen Benutzern deiner App teilen (also vom Gerät auf ein anderes Gerät)?

Das würde helfen um korrekte Tipps geben zu können.
 
J

johann1388

Neues Mitglied
Threadstarter
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:
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.meineEndung" android:mimeType="*/*" />
und die App des Empfängers reagiert beim Doppelklick auf die Datei und importiert hier in dem Fall die Einstellungen.

Bitte Fragen, wenn immenoch unverständlich.
 
J

jogimuc

Erfahrenes Mitglied
Hallo
damit deinne App auf das klicken der Datei rearieren kann brauchst du für Zb eine Activity einen Intentfilder im Manifest

Code:
<activity android:name=".deineActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="file" />
        <data android:mimeType="*/*" />
        <data android:pathPattern=".*\\.deineEndung" />
        <data android:host="*" />
    </intent-filter>
</activity>
Wenn du keine permissions benutzen willst musst du das Teilen über einen impliziten Intent machen der dann eines der bekannten Apps aufruft.
Die Datei zum Verschicken musst du schon erstellen zu mindestens das Datei Handle und das im App Speicherbereich denn dafür brachst du keine Permission.

Hoffe das hilft erstmal weiter, gibt zu mindesten Denkanstösse.

lg. Jörg

PS. hier noch ein Link den ich zu dem Thema gefunden habe
Android intent filter for a particular file extension?

Android intent filter: associate app with file extension

-- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
Ich noch mal .
Ich denke das du doch eine Permission brauchst.
Denn wenn die Datei verschickt ist und die bei dem User zB. im Download Ordner ankommt. Willst du doch auch darauf zugreifen können, auf jeden fall lesen, Dafür wirst du eine brauchen.
 
Zuletzt bearbeitet:
A

ashleyjones

Neues Mitglied
Wenn ich nicht falsch liege, denke ich, dass Sie eine Datei aus Ihrer String-Variablen erstellen und dann exportieren oder mit anderen teilen möchten.
Probieren Sie das folgende Code-Snippet aus. Es wird TXT-Datei von unserer String-Variable erstellen.

Code:
public static void writeStringAsFile(final String fileContents, String fileName) {
    Context context = App.instance.getApplicationContext();
    try {
        FileWriter out = new FileWriter(new File(context.getFilesDir(), fileName));
        out.write(fileContents);
        out.close();
    } catch (IOException e) {
        Logger.logError(TAG, e);
    }
}
 
J

jogimuc

Erfahrenes Mitglied
Nein so will oder wollte er es nicht. Er will eine datei die er im App speicher Bereich erstellt. Nur die App kann auf die datei zugreifen. Mit Hilfe eines Intent will er die Datei an eine andere App übergeben, und versenden. Die externe App hat arber nicht die Rechte auf die Datei zuzugreifen. Somit kann sie auch nicht versendet werden.

Er hat auch die Frage in einem anderen Forum gestellt und dort wurde sie auch beantwortet.
 
Zuletzt bearbeitet:
Oben Unten