Delphi Can
Permissions Sorunu [Çözüldü] - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7)
+--- Konu Başlığı: Permissions Sorunu [Çözüldü] (/showthread.php?tid=6281)

Sayfalar: 1 2 3


Permissions Sorunu [Çözüldü] - codder71 - 19-09-2021

Merhabalar Arkadaşlar

Uygulamamda izin sorgu işlemi yapmak istedim ama kod hata veriyor. Rad studio 10.4 de düzgün bir şekilde çalışan kod Rad studio 11 de hata vermekte sebebi ne olabilir acaba kullanım yöntemimi değişti. 
Hata :

E2250: There is no overloaded version of 'RequestPermissions' that can be called with these arguments


Altta kodları paylaşıyorum : 

Uses System.Permissions;

procedure TForm5.izinlimiyim(sender : TObject; const Apermission : TArray<string>;
                                const AGrantResults : TArray<TPermissionStatus>);
begin
 if  (Length(AGrantResults) = 2) and (AGrantResults[0] = TPermissionStatus.Granted)
                                 and (AGrantResults[1] = TPermissionStatus.Granted) then
 begin
   Dosya_indir;
 end
 else
 begin
  Toast('Uygulamanın İzinlere İhtiyacı Vardır.',ShortToast);
 end;

end;

procedure TForm5.iziniste;
var
Veri_yaz , Veri_Oku : string;
begin
 Veri_yaz := 'android.permission.WRITE_EXTERNAL_STORAGE';
 Veri_Oku := 'android.permission.READ_EXTERNAL_STORAGE';

 PermissionsService.RequestPermissions( [Veri_yaz,Veri_Oku] , izinlimiyim );

end;



Permissions Sorunu - nguzeller - 19-09-2021

google politikaları uyum sağlamış olabilirler.

Uygulamanızın, uygulama paketleri veya APK'larınızın 1 veya daha fazlasının manifest dosyasında requestLegacyExternalStorage işareti içerdiğini tespit ettik.

Android 11 veya sonraki sürümleri çalıştıran cihazlarda uygulamaları olan geliştiriciler, kullanıcıların cihaz depolama alanları üstünde daha fazla erişim denetimine sahip olmasını sağlamak için Kısıtlı Depolama'yı kullanmalıdır. 5 Mayıs tarihinden sonra uygulamanızı Android 11 veya sonraki sürümlerde yayınlamak için aşağıdakilerden birini yapmanız gerekir:

Uygulamanızı, Storage Access Framework veya Media Store API gibi daha fazla gizliliğe önem veren en iyi uygulamaları kullanacak şekilde güncelleyin
Uygulamanızı manifest dosyasında Tüm dosyalara erişim (MANAGE_EXTERNAL_STORAGE) iznini beyan edecek şekilde güncelleyin ve 5 Mayıs tarihinden itibaren Play Console'da Tüm dosyalara erişim izin beyanını tamamlayın
Uygulamanızdan Tüm dosyalara erişim iznini tamamen kaldırın
Android 11 sürümünü hedefleyen uygulamalar için requestLegacyExternalStorage işareti yok sayılır. Kapsamlı erişimi sürdürmek için Tüm dosyalara erişim iznini kullanmanız gerekir.

Kullanım iznine sahip olmadan Tüm dosyalara erişim iznine erişmek isteyen uygulamalar Google Play'den kaldırılır ve güncellemeleri yayınlayamazsınız.


Cvp: Permissions Sorunu - codder71 - 20-09-2021

(19-09-2021, Saat: 22:20)nguzeller Adlı Kullanıcıdan Alıntı: google politikaları uyum sağlamış olabilirler.

Uygulamanızın, uygulama paketleri veya APK'larınızın 1 veya daha fazlasının manifest dosyasında requestLegacyExternalStorage işareti içerdiğini tespit ettik.

Android 11 veya sonraki sürümleri çalıştıran cihazlarda uygulamaları olan geliştiriciler, kullanıcıların cihaz depolama alanları üstünde daha fazla erişim denetimine sahip olmasını sağlamak için Kısıtlı Depolama'yı kullanmalıdır. 5 Mayıs tarihinden sonra uygulamanızı Android 11 veya sonraki sürümlerde yayınlamak için aşağıdakilerden birini yapmanız gerekir:

Uygulamanızı, Storage Access Framework veya Media Store API gibi daha fazla gizliliğe önem veren en iyi uygulamaları kullanacak şekilde güncelleyin
Uygulamanızı manifest dosyasında Tüm dosyalara erişim (MANAGE_EXTERNAL_STORAGE) iznini beyan edecek şekilde güncelleyin ve 5 Mayıs tarihinden itibaren Play Console'da Tüm dosyalara erişim izin beyanını tamamlayın
Uygulamanızdan Tüm dosyalara erişim iznini tamamen kaldırın
Android 11 sürümünü hedefleyen uygulamalar için requestLegacyExternalStorage işareti yok sayılır. Kapsamlı erişimi sürdürmek için Tüm dosyalara erişim iznini kullanmanız gerekir.

Kullanım iznine sahip olmadan Tüm dosyalara erişim iznine erişmek isteyen uygulamalar Google Play'den kaldırılır ve güncellemeleri yayınlayamazsınız.
Merhabalar

Hocam öncelikle cevabınız için teşekkürler.

Hatayı runtineda almıyorum hocam. Bu hata ideden kaynaklanıyor ve uygulamayı derlemiyor. O satırı sildiğim zaman uygulama derleniyor ve istediğim gibi çalışıyor. Acaba bu kodun kullanımımı değişti farklı şeyler denedim ama yine de olmadı.


Permissions Sorunu - nguzeller - 20-09-2021

çalışmasında sorun Delphi de de olabilir, ben sadece böye bir sorun ile karışacaksınız belirtmek istedim, benim uygulama böyle bir uyarı geldi.


Cvp: Permissions Sorunu - codder71 - 20-09-2021

(20-09-2021, Saat: 17:17)nguzeller Adlı Kullanıcıdan Alıntı: çalışmasında sorun Delphi de de olabilir, ben sadece böye bir sorun ile karışacaksınız belirtmek istedim, benim uygulama böyle bir uyarı geldi.

Hocam benim suan yayında dosya yazma ve okuma izni olan uygulamam var sorun yok yayında ona güncelleme gönderecem bakalım inş hata vermez.


Permissions Sorunu - nguzeller - 20-09-2021

benimde yayında izinli uygulama vardı bu mesaj geldi foto çekmek için kullanıyordum, olmasada olurdu iptal ettim.


Cvp: Permissions Sorunu - codder71 - 21-09-2021

(20-09-2021, Saat: 22:55)nguzeller Adlı Kullanıcıdan Alıntı: benimde yayında izinli uygulama vardı bu mesaj geldi foto çekmek için kullanıyordum, olmasada olurdu iptal ettim.

Eski yöntemle yaptım şimdilik bakalım. Güncellemeye çalışacağım bakalım.


Cvp: Permissions Sorunu - emozgun - 22-09-2021

@codder71 Length(AGrantResults) da hata olmasın? Şunu deneyebilir misiniz?
procedure TForm1.HariciDepolamaIcinIzinIsteClick(Sender: TObject);
begin
  PermissionsService.RequestPermissions
    ([JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE),
      JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)],
      procedure(const APermissions: TArray<string>;
        const AGrantResults: TArray<TPermissionStatus>)
      begin
          if (AGrantResults[0] = TPermissionStatus.Granted) then
              Memo1.Lines.Add('READ_EXTERNAL_STORAGE İZİNLİ')
          else
              Memo1.Lines.Add('READ_EXTERNAL_STORAGE İZİNSİZ');
          if (AGrantResults[1] = TPermissionStatus.Granted) then
              Memo1.Lines.Add('WRITE_EXTERNAL_STORAGE İZİNLİ')
          else
              Memo1.Lines.Add('WRITE_EXTERNAL_STORAGE İZİNSİZ');
      end);
end;

Benim de sıkıntım aynı konuda. "Download" klasörüne Sqlite dosyasını yedekleme amacıyla kaydedebiliyordum. G.P.Store'a yüklemek için android:targetSdkVersion="30" (Andorid 11) olarak değiştirdim. Ondan beridir aynı uygulama Android 10'da da çalışsa yine "Download"a hiçbir şekilde kayıt yapamıyorum, "Permission denied" hatası veriyor.
@nguzeller in bildirdiği üzere "Storage Access Framework veya Media Store API gibi daha fazla gizliliğe önem veren en iyi uygulamaları kullanacak şekilde güncelleyin" kuralına uymak lazım galiba. Bununla ilgili yol gösteren olabilir mi acaba?


Permissions Sorunu - nguzeller - 22-09-2021

Bununla ilgili Delphi 11 bir örnek bekliyordum ben göremedim, Storage Access Framework veya Media Store API izinleri var mı ne şekilde yazılıyor onuda bilmiyorum.


Cvp: Permissions Sorunu - codder71 - 22-09-2021

(22-09-2021, Saat: 10:27)emozgun Adlı Kullanıcıdan Alıntı: @codder71 Length(AGrantResults) da hata olmasın? Şunu deneyebilir misiniz?
procedure TForm1.HariciDepolamaIcinIzinIsteClick(Sender: TObject);
begin
  PermissionsService.RequestPermissions
    ([JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE),
      JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)],
      procedure(const APermissions: TArray<string>;
        const AGrantResults: TArray<TPermissionStatus>)
      begin
          if (AGrantResults[0] = TPermissionStatus.Granted) then
              Memo1.Lines.Add('READ_EXTERNAL_STORAGE İZİNLİ')
          else
              Memo1.Lines.Add('READ_EXTERNAL_STORAGE İZİNSİZ');
          if (AGrantResults[1] = TPermissionStatus.Granted) then
              Memo1.Lines.Add('WRITE_EXTERNAL_STORAGE İZİNLİ')
          else
              Memo1.Lines.Add('WRITE_EXTERNAL_STORAGE İZİNSİZ');
      end);
end;

Benim de sıkıntım aynı konuda. "Download" klasörüne Sqlite dosyasını yedekleme amacıyla kaydedebiliyordum. G.P.Store'a yüklemek için android:targetSdkVersion="30" (Andorid 11) olarak değiştirdim. Ondan beridir aynı uygulama Android 10'da da çalışsa yine "Download"a hiçbir şekilde kayıt yapamıyorum, "Permission denied" hatası veriyor.
@nguzeller in bildirdiği üzere "Storage Access Framework veya Media Store API gibi daha fazla gizliliğe önem veren en iyi uygulamaları kullanacak şekilde güncelleyin" kuralına uymak lazım galiba. Bununla ilgili yol gösteren olabilir mi acaba?

Hocam cevabınız için teşekkürler. Bu metoda benzer bir deneme yaptım ama yine aynı hatayı aldım. Tekrar bi deneyecem ama

(22-09-2021, Saat: 11:07)nguzeller Adlı Kullanıcıdan Alıntı: Bununla ilgili Delphi 11 bir örnek bekliyordum ben göremedim, Storage Access Framework veya Media Store API izinleri var mı ne şekilde yazılıyor onuda bilmiyorum.

aynn hocam örneklere bende baktım ama birşey göremedim.

(22-09-2021, Saat: 10:27)emozgun Adlı Kullanıcıdan Alıntı: @codder71 Length(AGrantResults) da hata olmasın? Şunu deneyebilir misiniz?
procedure TForm1.HariciDepolamaIcinIzinIsteClick(Sender: TObject);
begin
  PermissionsService.RequestPermissions
    ([JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE),
      JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)],
      procedure(const APermissions: TArray<string>;
        const AGrantResults: TArray<TPermissionStatus>)
      begin
          if (AGrantResults[0] = TPermissionStatus.Granted) then
              Memo1.Lines.Add('READ_EXTERNAL_STORAGE İZİNLİ')
          else
              Memo1.Lines.Add('READ_EXTERNAL_STORAGE İZİNSİZ');
          if (AGrantResults[1] = TPermissionStatus.Granted) then
              Memo1.Lines.Add('WRITE_EXTERNAL_STORAGE İZİNLİ')
          else
              Memo1.Lines.Add('WRITE_EXTERNAL_STORAGE İZİNSİZ');
      end);
end;

Benim de sıkıntım aynı konuda. "Download" klasörüne Sqlite dosyasını yedekleme amacıyla kaydedebiliyordum. G.P.Store'a yüklemek için android:targetSdkVersion="30" (Andorid 11) olarak değiştirdim. Ondan beridir aynı uygulama Android 10'da da çalışsa yine "Download"a hiçbir şekilde kayıt yapamıyorum, "Permission denied" hatası veriyor.
@nguzeller in bildirdiği üzere "Storage Access Framework veya Media Store API gibi daha fazla gizliliğe önem veren en iyi uygulamaları kullanacak şekilde güncelleyin" kuralına uymak lazım galiba. Bununla ilgili yol gösteren olabilir mi acaba?
Hocam denedim yine aynı hatayı alıyorum.