Autor Téma: ...Delphi 11; Android; open PDF;  (Přečteno 1563 krát)

Offline bullhead

  • Nováček
  • *
  • Příspěvků: 11
  • Karma: 0
...Delphi 11; Android; open PDF;
« kdy: 24-01-2024, 00:10:22 »
Ahoj,

blbý dotaz, už jsem prošel X odkazů na netu a nedaří se mi vyřeší takovou pitomost (nejsem primárně mobilní vývojář) už tak dlouho, že to zkusím tady. A řeší to X lidi. Otevření PDF na Androidi apce v Delphi 11.

Soubor by měl existovat (už jsem se vykašlal na všechny příklady z netu ty nejedou, prostě FileExist na natvrdo cestu "/storage/emulated/0/Download/sample.pdf" je true:-)). Ale jako by neměl práva na ten soubory - otevření v jákekoliv apce failed nebo unable to load. Mám v delphi nastaveno read external storage a v release manifestu vidim
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
...mám v Options v Entitlement listu nastaveno Secure File Sharing na TRUE. A nic. FileExist true, ale soubor není ke čtení. Jestli chápu, může to souviset z runtime permissions, ale když předtím zavolám toto:
https://stackoverflow.com/questions/72047837/there-is-no-overloaded-version-of-requestpermissions-that-can-be-called-with-t
...tak GRANTED

Nenapadá někoho něco?

díky za případné info
B.



« Poslední změna: 24-01-2024, 00:12:44 od bullhead »

Offline bullhead

  • Nováček
  • *
  • Příspěvků: 11
  • Karma: 0
Re:...Delphi 11; Android; open PDF;
« Odpověď #1 kdy: 24-01-2024, 00:49:19 »
...mně střelí ...tak jsem to "vyřešil" ...metodou pokus omyl jsem se dostal, že když v release manifestu stáhnu target na 29 (=Android 10) TAK TO JEDE ...od 30 výšene ne (defa tam bylo 32 = Android 13)

...takže omlouvám se, že otravuji, ale měním dotaz:-) ...jak se to řeší v Androidu 11 (target 30) a výše (už mám dokonce dvě zařízení se 13tkou, to by měla být 32ka)?

ještě jednou děkuji za případné info
B.

Offline bullhead

  • Nováček
  • *
  • Příspěvků: 11
  • Karma: 0
Re:...Delphi 11; Android; open PDF;
« Odpověď #2 kdy: 24-01-2024, 01:23:22 »
...eee defa tam bylo 32, což je Android 12 (a dokonce jsem to tam napsal 2x) ...už je pozdě ...raději zhrnu:

Jede:
API level 29 = Android 10

Nejede:
API level 30 = Android 11
API level 31 & API level 32 = Android 12
API level 33 = Android 13

...a vzhledem k tomu, že od Srpna 2023 je povinost pro store targetovat na API level 33 (a během letošního roku se vyrojí X updatů na 14tku, kdoví, jestli to nezvednou), tak to stejně asi budu muset pořešit:-( ...takže kdyby někdo věděl, co je třeba pro API level 30 a výše

děkuji
B.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3516
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:...Delphi 11; Android; open PDF;
« Odpověď #3 kdy: 24-01-2024, 07:54:55 »
Kód: [Vybrat]
class function TMainForm.NeedsAllFilesAccessPermission: Boolean;
begin
{$IFDEF WIN32}
  Result := False;
{$ELSE}
  Result := TOSVersion.Check(11) and not TJEnvironment.JavaClass.isExternalStorageManager;
{$ENDIF}
end;

class function TMainForm.ShowAllFilesAccessPermissionSettings: Boolean;
{$IFDEF ANDROID}
var
  LIntent: JIntent;
  LUri: Jnet_Uri;
  LAction: JString;
begin
  Result := False;
  if NeedsAllFilesAccessPermission then
  begin
    LUri := TJnet_Uri.JavaClass.fromParts(StringToJString('package'), TAndroidHelper.Context.getPackageName, nil);
    LAction := StringToJString('android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION');
    LIntent := TJIntent.JavaClass.init(LAction, LUri);
    TAndroidHelper.Context.startActivity(LIntent);
    Result := True;
  end;
{$ELSE}
begin
{$ENDIF}

end;

a na vhodne místo ShowAllFilesAccessPermissionSettings

v manifestu musíš mít MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
Embarcadero MVP - Czech republic

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3516
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:...Delphi 11; Android; open PDF;
« Odpověď #4 kdy: 24-01-2024, 08:00:42 »
Jde o to, že od Android 11 do Android 12 se to dalo přerazit tím android:requestLegacyExternalStorage="false"   v manifestu, ale v Android 13 uz to nelze.

Takže budto zmenis misto ulozeni (nekdy se to da ofejkovat ze to PDF budes ukladat tam kde je hudba, a tam se da nastavit nejake pravo, neco jak MEDIA), nebo zapnes ALL FILES ACCESS jak jsem jsem ukazal v kodu. Je to vypujcene z Kastri knihovny, ktera je na githubu.

Uz se nejakou dobu chystam, že to napíší na delphi.cz , ale znas to :-)
Embarcadero MVP - Czech republic

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3516
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:...Delphi 11; Android; open PDF;
« Odpověď #5 kdy: 24-01-2024, 08:02:10 »
ha ha ha, spise requestLegacyExternalStorage="true"
Embarcadero MVP - Czech republic

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3516
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:...Delphi 11; Android; open PDF;
« Odpověď #6 kdy: 24-01-2024, 08:05:56 »
Taky je vtipne, ze pokud aplikaci nainstalujes na Android12 s tim READ_EXTERNAL_STORAGE a requestLegacyExternalStorage, tak kdyz se ti Android aktualizuje na 13, tak milej google tim automaticky na pozadi nastavi to MANAGE_APP_ALL_FILES_ACCESS_PERMISSION (jde to mimochodem i nekde v nastaveni systemu per aplikace), a ty jsi spokojen, ze ti tvoje apka funguje na Android13, ale jen do te doby, kdyz tu aplikaci nebudes chtit na tu 13 instalovat bez upgradu z Android12.

No tak jsem se smichem popadal, az jsem malem roztriskal telefon.
Embarcadero MVP - Czech republic

Offline bullhead

  • Nováček
  • *
  • Příspěvků: 11
  • Karma: 0
Re:...Delphi 11; Android; open PDF;
« Odpověď #7 kdy: 24-01-2024, 10:15:41 »
...zaprvé díky za analýzu testnu! ...a tu 13tku to ale zatím nepořeší, jestli chápu

...včera jak jsem hledal, tak jsem tady našel, že přidali nové permission (READ_MEDIA_xxx), ale netýká se to dokumentů a také s tím lidi bojují ...já naštěstí nemusím do store (je to pro kamaráda hold dostane APK), ale že to funguje jak to funguje to mne tedy děsí ...a to jsem si řekl, že si to jen z legrace vyzkouším, že to bude trifka:-)

B.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3516
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:...Delphi 11; Android; open PDF;
« Odpověď #8 kdy: 24-01-2024, 10:23:23 »
...zaprvé díky za analýzu testnu! ...a tu 13tku to ale zatím nepořeší, jestli chápu

...včera jak jsem hledal, tak jsem tady našel, že přidali nové permission (READ_MEDIA_xxx), ale netýká se to dokumentů a také s tím lidi bojují ...já naštěstí nemusím do store (je to pro kamaráda hold dostane APK), ale že to funguje jak to funguje to mne tedy děsí ...a to jsem si řekl, že si to jen z legrace vyzkouším, že to bude trifka:-)

B.

Kdepak, to co jsem psal, je prave reseni pro Android 13 (to s tim NeedsAllFilesAccessPermission).

Ale jde to pouzit i pro 11,12 - pokud nemas vynucene to stare chovani tim requestLegacyExternalStorage.

Myslel jsem, ze jsem to napsal srozumitelne :-)
Embarcadero MVP - Czech republic

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3516
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:...Delphi 11; Android; open PDF;
« Odpověď #9 kdy: 24-01-2024, 10:30:14 »
nebo si najdi na youtube video, jak uzivatel manualne povoli MANAGE_APP_ALL_FILES_ACCESS_PERMISSION pres nastaveni androidu, to co jsem napsal ja, je ze se ten dialog zobrazi, kdyz je to potreba - pro store nutnost. treba tady: https://www.youtube.com/watch?v=Bpu2DikZqBc
Embarcadero MVP - Czech republic

Offline bullhead

  • Nováček
  • *
  • Příspěvků: 11
  • Karma: 0
Re:...Delphi 11; Android; open PDF;
« Odpověď #10 kdy: 24-01-2024, 11:01:30 »
Dík testnu! Jsem moc nespal díky za pochopení:-)

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3516
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:...Delphi 11; Android; open PDF;
« Odpověď #11 kdy: 24-01-2024, 18:50:30 »
Embarcadero MVP - Czech republic

Offline bullhead

  • Nováček
  • *
  • Příspěvků: 11
  • Karma: 0
Re:...Delphi 11; Android; open PDF;
« Odpověď #12 kdy: 25-01-2024, 14:26:44 »
Dekujeme!:-)