🏹Implicit intents

🎯 Hangi Amaçla Kullanılır

İşletim sistemi tarafından yönetilen isteklerdir

  • Hangi uygulamanın çalıştırılacağına işletim sistemi karar verir

  • Diğer uygulamalara istekte bulunmayı sağlar

  • ✅ App Chooser adı verilen yapı ile kullanıcıya seçim hakkı tanınır

✅ App Chooser

✨ Implicit Intent Oluşturma

  • Intent oluşturmadan önce isteği karşılayabilecek Activity var mı kontrol edilmelidir.

  • İsteklerini sağlayacak Activity olmazsa uygulama kapanır

// Implicit intent oluşturma
Intent sendIntent= new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType("text/plain");

// Intent başlığını ayarlama
String title = getResources().getString(R.string.chooser_title);

// App Chooser oluşturma
Intent chooser = Intent.createChooser(sendIntent, title);

// İsteği sağlayacak Activity var mı kontrolü
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(chooser);
}

🔛 Implicit Intent Alma

  • AndroidManifest.xmldosyasında intent-filter ile tanımlanan uygulamalardan biri seçilir

  • intent-filter 0 veya daha fazla action,categoryveya data içerir

  • intent-filter içermeyen Activity'ler sadece explicit intent ile çağrılabilir

  • Birden fazla intent-filter veya bir intent-filter için birden fazla action, category veya data tanımlanabilir

<intent-filter>
    <!-- Açılış Activity'si oluduğunu belirtlir -->
    <action android:name="android.intent.action.MAIN" />
    <!-- Launcher ekranında (telefon ana ekranında) gözükmesini sağlar -->
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<activity android:name="ShareActivity">
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>
</activity>
  • Action yapısı Intent üzerinde ACTION_ ön eki ile kullanılır

<intent-filter>
    <!-- Intent sendIntent = new Intent(Intent.ACTION_SEND); -->
    <action android:name="android.intent.action.EDIT" />
    <action android:name="android.intent.action.VIEW" />
</intent-filter>

🔀 ShareCompat.IntentBuilder ile Veri Paylaşma

  • Sosyal ağ uygulamalarında veri paylaşmak için kullanılan yöntemdir

  • Implicit intent yerine, Android sunduğu bu yapı daha faydalıdır

ShareCompat.IntentBuilder
    .from(this)         // information about the calling activity
    .setType(mimeType)  // mime type for the data
    .setChooserTitle("Share this text with: ") //title for the app chooser
    .setText(txt)       // intent data
    .startChooser();    // send the intent

👨‍💼 Görevleri Yönetme

  • Android'in çalışma yapısı gereği, Activity'ler eski açık olanı kullanmak yerine kendileri yeni Activity oluştururlar (Şekil 1)

  • Implicit intent ile açılan Activity'ler de, asıl çalışan Activity'den bağımsız olarak açılır (Şekil 2)

Bu yapı Activity Launch Modes ile değiştirilebilmektedir.

🔗 Faydalı Kaynaklar

Last updated

© 2024 ~ Yunus Emre Ak ~ yEmreAk