AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Android Intent für verschiedene Dateitypen?

Android Intent für verschiedene Dateitypen?

Ein Thema von sko1 · begonnen am 16. Mai 2018 · letzter Beitrag vom 16. Mai 2018
Antwort Antwort
sko1

Registriert seit: 27. Jan 2017
569 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Android Intent für verschiedene Dateitypen?

  Alt 16. Mai 2018, 11:56
Hallo,

um verschiedene Dateitypen auf dem Handy anzeigen zu können, brauche ich verschiedene Intents:

Delphi-Quellcode:
  if (fileext = 'JPG') or (fileext = 'JPEG') then
    Intent.setDataAndType(StrToJURI(filename), StringToJString('image/jpeg'))
  else if fileext = 'PDFthen
    Intent.setDataAndType(StrToJURI(filename),
      StringToJString('application/pdf'))
  else if fileext = 'TXTthen
    Intent.setDataAndType(StrToJURI(filename), StringToJString('text/plain'))
... also mal "image/...", mal "application/..." oder "text/..."

Gibt es da was "allgemeingültiges" was gleich die richtigen DataTypes des Intents einstellt?

Käme bei obigem Code vielleicht noch mp3 dazu, müsste ich einen weiteren if-Zweig mit "audio/..." aufmachen

Das muss doch besser / einfacher / allgemeingültiger gehen?

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
34.781 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Android Intent für verschiedene Dateitypen?

  Alt 16. Mai 2018, 12:24
Viele IFs sind sowieso schon ein Designfehler.

Entweder du machst dir ein/zwei Arrays.
Delphi-Quellcode:
const
  FileExt: array[0..7] of string = ('', '.txt', '.html', '.css', '.js', '.gif', '.jpeg', '.png');
  ContentType: array[0..7] of string = ('application/octet-stream', 'text/plain', 'text/html', 'text/css', 'text/js', 'image/gif', 'image/jpeg', 'image/png');
Man könnte das auch in eine Datei schreiben und diese als Ressource in die EXE linken

Oder du fragst Andere, welche bereits solch eine Liste haben
z.B. TIdMimeTable (IdGlobalProtocols.pas), TWebFileExtensions (WebFileDispatcher.pas) oder UrlMon.pas

Eventuell kann man auch Android nach sowas fragen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (16. Mai 2018 um 12:27 Uhr)
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
698 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Android Intent für verschiedene Dateitypen?

  Alt 16. Mai 2018, 12:55
Delphi-Quellcode:
function GetMimeType(AFilename: String): JString;
var
  jstr: JString;
begin
  // MIME-Type auslesen
  result := StringToJString('application/pdf'); // Standard
  jstr := TJMimeTypeMap.JavaClass.getFileExtensionFromUrl(StringToJString(AFilename));
  if jstr <> nil then begin
    jstr := TJMimeTypeMap.JavaClass.getSingleton.getMimeTypeFromExtension(jstr);
    if jstr <> nil then
      result := jstr;
  end;
end;
  Mit Zitat antworten Zitat
TiGü
Online

Registriert seit: 6. Apr 2011
Ort: Berlin
1.744 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Android Intent für verschiedene Dateitypen?

  Alt 16. Mai 2018, 12:56
Im neuen 10.2.3 würde es sogar eine Klasse dafür geben (System.Net.Mime.TMimeTypes -> hier dann die Default-Eigenschaft nehmen, um eine Instanz zu erhalten).
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
569 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Android Intent für verschiedene Dateitypen?

  Alt 16. Mai 2018, 15:55
Ich kann leider (oder Gott sei Dank?) nur auf Berlin 10.1 Update 2 zurückgreifen

Den Tip von bra schau ich mir an.

Ciao
Stefan
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2018 by Daniel R. Wolf