2015-11-09 20 views
5

enter image description herenasıl nasıl değerini silmek için "Bir daha sorma"

Ben "Bir daha asla sorma" onay kutusu boolean bayrak nerede depolandığını bilmek isteyen Android M'nin çalışma zamanı izni iletişim seçim ve unutmak? Programatik olarak değil, manuel olarak - ayar, komut veya bazı araçlarla. Takas uygulama verilerini kaldırma, kaldırma, kaldırma ve kaldırma, manuel olarak açma/kapama izinlerini açıp kapatmayı denediniz, hatta emülatör için daha yeni bir Marshmallow imge oluşturmaya çalıştınız ama şansınız yok!

+1

Ayarlara gidip uygulamalara gidip uygulamanızı seçerseniz, bir yerde olmalı diye düşünüyorum. – Johan

+1

Evet, doğru, sadece "Uygulama Tercihlerini Sıfırla" seçeneğini yanlışlıkla keşfettim. Şimdiye kadar bilmiyordum. – WindRider

+0

Hayır, işe yaramıyor! :(Cevabımı siliyorum! – WindRider

cevap

6

Hem takas verileri (Ayarlar> Uygulamalar> uygulama> Depolama> Verileri Temizle) ve uygulamanın kaldırılması, uygulamanın çalışma zamanı izinleriyle ilgili her şeyi temizlemenin yanı sıra bu işaretin durumunu da temizler.

Bu davranış, this sample app aracılığıyla, Android 6.0 çalıştıran bir Nexus 5 üzerinde test edilmiştir.

Bu yer için el ile bir seçenek görmeyi hatırlıyorum, ancak şimdi bulamıyorum. M Geliştirici Önizleme sürümlerinde varolan bir şey olabilir ve son 6.0 sürümü için çekildi.

+0

Emülatör kullanıyorum - hiçbir şey işe yaramıyor. Emülatörde test edebilir misiniz lütfen? – WindRider

+0

@WindRider: Her iki yaklaşım da bir Android 6.0 öykünücüsü üzerindeki bu örnek uygulamayla iyi çalışır. – CommonsWare

+0

Sorun kodumdaydı. İzinler yerine izin grupları kullanıyordum. Bu, sistemin ne olursa olsun her seferinde PERMISSION_DENIED değerini geri göndermesine neden oldu. – WindRider

3

Buldum:

Sistem Ayarları> (menüsünde) Uygulamalar> Reset Uygulama Tercihleri ​​enter image description here

4

Uygulamanın ayarlarındaki verileri temizleyerek "unutabilirsiniz". Ancak, bir isteğin yeniden istenmemesi için ayarlanıp ayarlanmadığını bulmak isterseniz, onRequestPermissionsResult() yöntemini kullanarak programatik olarak kontrol edebilirsiniz.

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    for(String permission: permissions){ 
      if(ActivityCompat.shouldShowRequestPermissionRationale(this, permission)){ 
       //denied 
      }else{ 
       if(ActivityCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED){ 
        //allowed 
       } else{ 
        //set to never ask again 
        Log.e("set to never ask again", permission); 
       } 
      } 
    } 
} 

PS: Ben this cevaba tam olarak uygulanmasını yanıtladım.

İlgili konular