Intent
Intent service, pencere başlatmak için kullanılabilir. Intent içinde iki alan var. Bunlar data ve extra alanları. data alanı iki activity arasında Uri geçmek için kullanılır. extra alanı iki activity arasında veri geçmek için kullanılır.
data Alanı
data alanı Uri barındırır.
extra Alanı
extra alanı bir Bundle nesnesidir. Bundle nesnesine extras metodları ile erişiriz. Bundle, Parcelable arayüzünden kalıtan nesneleri saklayabilir. Parcelable nesnesinin boyutu belli bir üst sınırı aşmamalıdır. Sanırım 1 MB. Eğer bu sınır aşılıyorsa, veri başka bir yöntemle - mesela file olarak - aktarılmalı.
constructor
Şöyle yaparız.
Şöyle yaparız.
İlk activity sınıfını stack'ten çıkartmak için şöyle yaparız.
Verilen isme dahip bir Parcelable oldup olmadığını döner. Şöyle yaparız.
Şöyle yaparız.
Uri döner. Örnek ver.
getExtras metodu
Bundle nesnesi döner. Şöyle yaparız.
Şöyle yaparız.
Belirtilen isme sahip Parcelable nesnesini döner. Şöyle yaparız.
Byte dizisi için şöyle yaparız.
Pencere başlatmak için startActivity() ile kullanılır. Bu durumda Constructor metodu iki parametre alır. Kaynak ve Hedef. Mesela ana pencereden login penceresini açmak için şöyle intent nesnesi şöyle yaratılır.
Şöyle yapılır
Intent service, pencere başlatmak için kullanılabilir. Intent içinde iki alan var. Bunlar data ve extra alanları. data alanı iki activity arasında Uri geçmek için kullanılır. extra alanı iki activity arasında veri geçmek için kullanılır.
data Alanı
data alanı Uri barındırır.
extra Alanı
extra alanı bir Bundle nesnesidir. Bundle nesnesine extras metodları ile erişiriz. Bundle, Parcelable arayüzünden kalıtan nesneleri saklayabilir. Parcelable nesnesinin boyutu belli bir üst sınırı aşmamalıdır. Sanırım 1 MB. Eğer bu sınır aşılıyorsa, veri başka bir yöntemle - mesela file olarak - aktarılmalı.
constructor
Şöyle yaparız.
Intent intent = new Intent ();
constructor - Context + ClassŞöyle yaparız.
Intent intent = new Intent(MyActivity1.this, MyActivity2
.class);
addFlags metoduİlk activity sınıfını stack'ten çıkartmak için şöyle yaparız.
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
hasExtra metoduVerilen isme dahip bir Parcelable oldup olmadığını döner. Şöyle yaparız.
if(intent.hasExtra("byteArray")) {...}
getByteArrayExtra metoduŞöyle yaparız.
intent().getByteArrayExtra("byteArray")
getData metoduUri döner. Örnek ver.
getExtras metodu
Bundle nesnesi döner. Şöyle yaparız.
Bundle bundle = intent.getExtras();
getIntExtra metoduŞöyle yaparız.
int musicOn = intent.getIntExtra("music on",0);
getParcelableArrayListExtra metoduBelirtilen isme sahip Parcelable nesnesini döner. Şöyle yaparız.
ArrayList<QuestionResult> questions = getIntent().getParcelableArrayListExtra
("FailedResult");
getParcelableExtra metodu
Belirtilen isme sahip Parcelable nesnesini döner. Şöyle yaparız.intent.getParcelableExtra("Bitmap")
getSerializableExtra metodu
Şöyle yaparız.
ArrayList<String> list = (ArrayList<String>) intent.getSerializableExtra("key");
getStringArrayListExtra metodu
Şöyle yaparız.
İsmi olan bir Parcelable ekler.ArrayList<String> list = getIntent().getStringArrayListExtra("key")
getStringExtra metodu
Belirtilen isme sahip Parcelable nesnesini döner. Şöyle yaparızString user_message = intent.getStringExtra("Text"));
putExtra metodu
Byte dizisi için şöyle yaparız.
ByteArrayOutputStream bs = new ByteArrayOutputStream();
intent.putExtra("byteArray", bs.toByteArray());
Class için şöyle yaparız.
intent.putExtra("myActivity", Activity2.class);
Int için şöyle yaparız.int i = 100;
intent.putExtra("LAUNCH_TARGET", i);
String için şöyle yaparız.String str = ...;
intent.putExtra("string", str);
putExtras metodu
Şöyle yaparız.
İsmi olan bir Parcelable ekler. Elimizde şöyle bir liste olsunŞöyle yaparız.
Bundle bundle = ...;
intent.putExtras (bundle);
putParcelableArrayListExtra metoduArrayList<QuestionFialed> failedQuestions;
Bu sınıf şu arayüzden kalıtmalıdır.public class QuestionFailed implements Parcelable {
...
}
Şöyle yaparızintent.putParcelableArrayListExtra("FailedResult", failedQuestions);
Diğer activity içinde şöyle erişiriz.ArrayList<QuestionResult> questions = getIntent().getParcelableArrayListExtra
("FailedResult");
putStringArrayListExtra metodu
Şöyle yaparız.
Pencere BaşlatmakArrayList<String> list = ...;
intent.putStringArrayListExtra("key", list);
startActivity İle Yapılabilecek ŞeylerPencere başlatmak için startActivity() ile kullanılır. Bu durumda Constructor metodu iki parametre alır. Kaynak ve Hedef. Mesela ana pencereden login penceresini açmak için şöyle intent nesnesi şöyle yaratılır.
Intent intent= new Intent(MainActivity.this,LoginActivity.class);
Daha sonra startActivity() metodu çağrılır.Intent intent = new Intent(FirstActivity.this,OrderScreen.class);
startActivity(intent);
GPS'i AçmakŞöyle yapılır
startActivity(new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
E-Posta Göndermek
Intent e-posta gönderilirken kullanılır. Intent doldurulduktan sonra e-posta uygulamalarından birisi seçilerek gönderilir.
Intent emailIntent = new Intent(Intent.ACTION_SEND);
...
//let the user choose what email client to use
startActivity(Intent.createChooser(emailIntent, "Send mail using...")); }
Intent.createChooser yerine şöyle de yapılabilir. Ancak ben bunu sevmiyorum.
Bir dosya gösterilebilir.
Başka Uygulama Başlatmak
A uygulaması, B uygulamasını şöyle başlatabilir. B uygulamasından yeni bir tane yaratılıp yaratılmayacağı B uygulamasının launchMode alanında belirtilir.
Camera açılabilir.
Şöyle yaparız
Şöyle yaparız.
Galeriden Resim Seçmek 2
Şöyle yaparız. Bu sefer Intent.createChooser kulllanıyoruz. Benzer bir kod örneği de burada
ResolveInfo r = ...;
emailIntent.setClassName(r
.activityInfo.packageName, r.activityInfo.name);
E-posta'nın diğer alanları şöyle doldurulur.
emailIntent.setType("text/plain");
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"abc@gmail.com"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Reminder");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Null");
Dosya eklentisi için şöyle yaparız.File file = ...;
Uri uri = Uri.fromFile(file);
emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
Dosya AçmakBir dosya gösterilebilir.
private void openScreenshot(File imageFile) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(imageFile);
intent.setDataAndType(uri, "image/*");
startActivity(intent);
}
startActivityForResult İle Yapılabilecek ŞeylerBaşka Uygulama Başlatmak
A uygulaması, B uygulamasını şöyle başlatabilir. B uygulamasından yeni bir tane yaratılıp yaratılmayacağı B uygulamasının launchMode alanında belirtilir.
Camera açılabilir.
Şöyle yaparız
Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder =new File(Environment.getExternalStorageDirectory(),"MyImages");
if(imagesFolder.mkdirs()){
Log.d(TAG, "The directory is created");
} else {
Log.d(TAG, "Failed or already exists");
}
File image = new File(imagesFolder, "image_001.jpg");
try {
if(image.createNewFile()){
Log.d(TAG, "The file is created");
} else {
Log.d(TAG, "The file already exists");
}
} catch (IOException e) {
Log.e(TAG, "createNewFile Failed");
e.printStackTrace();
}
imageUri = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(imageIntent, REQUEST_CODE_FROM_CAMERA);
Kamerayı başlatan uygulama sonucu şöyle alır@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_FROM_CAMERA &&
resultCode == Activity.RESULT_OK){
...
}
}
Galeriden Resim Seçmek 1Şöyle yaparız.
Intent intent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(GaleryIntent, RESULT_LOAD_IMAGE);
Sonuç şöyle alınır.@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK) {
Uri SelectedImage = data.getData();
...
}
}
Galeriden Resim Seçmek 2
Şöyle yaparız. Bu sefer Intent.createChooser kulllanıyoruz. Benzer bir kod örneği de burada
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Choose"), 1);
setType için resim yanında pdf de seçmek isteseydik şöyle de yapabilirdik.i.setType("image/*|application/pdf|audio/*");
Eğer sadece açılabilen dosyalar olduğundan emin olmak istersek şöyle yaparız.intent.addCategory(Intent.CATEGORY_OPENABLE);
Sonuç şöyle alınırpublic void onActivityResult(int reqCode, int resCode, Intent data){
if(resCode == Activity.RESULT_OK){
if(reqCode == 1){
btn1.setImageURI(data.getData());
}
}
}
Galeriden Çoklu Resim Seçmek 3
Yukarıdaki örnek ile benzer. Intent için şu kodu ekleriz.
Settings - Ayarları Açmak
Yukarıdaki örnek ile benzer. Intent için şu kodu ekleriz.
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
Çoklu resim seçildiği için onActivityResult haliyle biraz daha farklı olacaktır.Settings - Ayarları Açmak
Hiç yorum yok:
Yorum Gönder