Soru & Cevap

Android sürüm farklılığı? ...

01.08.2017 - 12:55

herkese. cok enteresan bir sorunum mevcut.
Minimum SDK 5 olarak oluşturduğum projemi tamamladıktan sonra Samsung S8 (API 24 Android 7.0) telefona yükleyip çalıştırdım. Galeriden resimler seçip bunları sunucuma kayıt etmek istiyorum fakat seçmiş olduğum resimler NULL olarak gözüküyor.

fakat aynı işlemi Samsung Note 3 Telefonunda bulunan API 21 (Android 5.0 Lollipop) sürümünde denediğimde hiçbir sıkıntı sorun olmadan ekleme ve yükleme işlemlerini gerçekleştiriyorum.

şimdi en baştan bir Minimum SDK API 24:Android 7.0 olan Proje oluşturup kodlarımı buraya import ettim fakat değişen birşey yine olmadı Null sonucunu yine alıyorum.
bu konu için neler yapabilirim ? 

24 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-61684-1501749567.jpg
oğuzhanyiğit
01.08.2017 - 03:24

Api 23 ile gelen "runtime permission" olayı hataya sebebiyet verebilir ama logları görmeden kesin birşey söylemek zor,

adb ile logları toplayıp buraya eklersen daha iyi olur hatayı görmek açısından,

runtime permission hatası ise aşağıdaki metodları kullan:

    private static final int PERMISSION_REQUEST_CODE = 1;

    // ANA kullanacağın fonksiyon bu
    public void islemiYap() {
        if (checkPermission()) {
            // invoke etmek istediğin fonksiyonu burda çağır
        } else {
            requestPermission();
        }
    }

    private boolean checkPermission() {
        int result = ContextCompat.checkSelfPermission(Settings.this, android.Manifest.permission.READ_EXTERNAL_STORAGE);
        return result == PackageManager.PERMISSION_GRANTED;
    }

    private void requestPermission() {
        if (ActivityCompat.shouldShowRequestPermissionRationale(Settings.this, android.Manifest.permission.READ_EXTERNAL_STORAGE)) {
            Toast.makeText(Settings.this, "Read External Storage permission allows us to do store log files. Please allow this permission in App Settings.", Toast.LENGTH_LONG).show();
        } else {
            ActivityCompat.requestPermissions(Settings.this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
        switch (requestCode) {
            case PERMISSION_REQUEST_CODE:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Log.e("value", "Permission Granted, Now you can use local drive .");
                    // izin alındı şimdi yapmak istediğin işlemi yapabilirsin
                    // invoke etmek istediğin fonksiyonu burda çağır
                } else {
                    Log.e("value", "Permission Denied, You cannot use local drive .");
                }
                break;
        }
    }

 

+ Manifest'e eski usül READ_EXT... permission'ı eklemeyi unutma

Profile picture for user sercangoger7
sercangoger7
01.08.2017 - 02:19

Galeriye gidip resmi sectiğimde bitmap_image2 objesinin içine atıyorum.

kaydet butonuna bastıgımda bitmap_image2 nesnesi null degil ise kayıt yaptırıyyorum.eger null ise kaydetmiyorum.

sorunda burda API 21 de null gelmiyor.fakat API 24 de null bile gelmiyo.üstüne birde durduruldu mesajı verip kapatılıyor uygulamam.

publiC void GALERIDEN_RESIM_CEKME(){

Uri selectedImage = data.getData();

String[] filepathColumn = {MediaStore.Images.Media.DATA};

Cursor cursor = getContentResolver().query(selectedImage, filepathColumn, null, null, null); 

cursor.moveToFirst();

int columnIndex = cursor.getColumnIndex(filepathColumn[0]);

String filepath = cursor.getString(columnIndex);

bitmap_image2 = BitmapFactory.decodeFile(filepath);

cursor.close();

}

 

picture-77724-1485341228.png
ilkaykaratepe
01.08.2017 - 01:30

fotonun path bilgisini ne ile kaydediyosun, kodu paylaşırsan daha iyi olur.

 api 21 den sonra mesela "onAttach(Activity activity) " olan ifade "onAttach(Context context)" olarak değişti api 21 öncesi 2. ifadeyi kullandığında çalışmıyor buna benzer bi değişiklik sebep olabilir tabi sorun bu değil örnek olsun diye verdim api değişikliklerinde bazı android kütüphaneleri değiştiriliyor ve önceki hali deprecated olarak derleyi tarafından önerilmiyor ve kullansan bile üstü çiziliyor ve sen yeni halini eski bir apide kullanırsan örnek verdiğim problem oluşabiliyor.