Bu derste android implicit intent konusuna devam ediyoruz. İndirdiğimiz veya telefonumuzda var olan resimlere nasıl ulasıp bunları nasıl göndereceğimiz konularından bahsettik.
Ayrıca sdk değişimleri ile ilgili de bilgi verdim. API 23den sonra uygulamada permission gereken işlemler yapılacaksa bunu çalışma anında kullanıcıdan istememiz gerekiyor. Videoda yanlış bir açıklama yapmışım. Burada çıkan sorun tamamen izin verilmediği ile ilgilidir.
Bu konu ilerleyen videolarda detaylı bir şekilde anlatılacaktır. Ama kaynak kodlarına bu uygulamanın çalışan versiyonunu koyuyorum. Dediğim gibi ilerleyen videolarda Android runtime permission konusu detaylı bir şekilde anlatılacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
package emrealtunbilek.com.implicitintent; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.os.Environment; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Toast; import java.io.File; import java.util.ArrayList; import java.util.jar.Manifest; public class MainActivity extends AppCompatActivity { private static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE =10 ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void calistir(View v) { Intent intent = null, chooser = null; if (v.getId() == R.id.button) { intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("geo:39.933363,32.859742")); chooser = Intent.createChooser(intent, "Uygulamayı Seç"); startActivity(chooser); } if (v.getId() == R.id.button2) { intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("market://details?id=com.facebook.katana")); chooser = Intent.createChooser(intent, "Uygulamayı Seç"); startActivity(chooser); } if (v.getId() == R.id.button3) { intent = new Intent(Intent.ACTION_SEND); intent.setData(Uri.parse("mailto:")); String[] to = {"emrealtunbilek@gmail.com", "deneme@deneme.com"}; intent.putExtra(Intent.EXTRA_EMAIL, to); intent.putExtra(Intent.EXTRA_SUBJECT, "uYGULAMADAN Gönderildi"); intent.putExtra(Intent.EXTRA_TEXT, "Mailin içeriği"); intent.setType("message/rfc822"); chooser = Intent.createChooser(intent, "Mail Gönder"); startActivity(chooser); } if (v.getId() == R.id.button7) { if (Build.VERSION.SDK_INT >= 23) { if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{ android.Manifest.permission.READ_EXTERNAL_STORAGE }, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); } } else { yapilacaklar(); } } } public void yapilacaklar(){ Intent intent=null, chooser=null; File yol= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); String[] dosyalarListesi= yol.list(); Uri uri=null; ArrayList<Uri> arrayList=new ArrayList<Uri>(); for(String tekdosya:dosyalarListesi){ Toast.makeText(this,yol.toString()+"/"+tekdosya, Toast.LENGTH_LONG).show(); uri=Uri.parse("file://"+yol.toString()+"/"+tekdosya); arrayList.add(uri); } intent=new Intent(Intent.ACTION_SEND_MULTIPLE); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_TEXT, "Resim gönderdim baksana"); intent.putExtra(Intent.EXTRA_STREAM, arrayList); chooser=Intent.createChooser(intent, "Uygulama Seç"); startActivity(chooser); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE: if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){ yapilacaklar(); }else { if(ActivityCompat.shouldShowRequestPermissionRationale(this, android.Manifest.permission.READ_EXTERNAL_STORAGE)) {//bu deny ettiğinde new AlertDialog.Builder(this).setTitle("sadas").setMessage("Bu sebeple izin vermelisin ").show(); }else { //bu never show diyip deny dediğinde new AlertDialog.Builder(this).setTitle("sadas").setMessage("İzin vermedin :( ").show(); } } } } } |