Intent ile Android Uygulamalar Arasında Veri Paylaşımı 📱↔️📱

Ömer Akkoyun
2 min readNov 1, 2023

--

Yeni bir konuyla herkese selammm 😊

🟢Android uygulamaları arasında veri paylaşımı, geliştiricilerin sıkça karşılaştığı bir ihtiyaçtır. Bu yazıda, birinci uygulamadan ikinci uygulamaya bir string verisi göndermek için kullanabileceğiniz yöntemi göstermeye çalışacağım. Haydi başlayalım 😊

🟦 Öncelikle 2 tane uygulama projesi oluşturalım, ben kolay olsun diye ilk projenin ismini “First App” ikinci projenin ismini de “Second App” olarak oluşturdum.

🟪FirstApp ile SecondApp’in belirli bir aktivitesini başlatmak veya belirli bir hizmetini kullanmak istiyorsak, <queries> etiketi ile app id’yi eklememiz gerekir. (Android 11 ve öncesinde buna gerek yok)

Şimdi manifest’e aşağıdaki <queries> kodlarını ekleyelim;

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<queries>
<package android:name="com.example.secondapp"/> // erişeceğimiz appId
</queries>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.FirstApp">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

🟥 Manifest ile işimiz bu kadar, FirstApp projesinin ana ekranına bir buton ekledim, bu butona tıklandığında SecondApp’ i açacak kodları yazmaya başlayalım.

val btnSend = findViewById<Button>(R.id.btnSend) // buton

btnSend.setOnClickListener {
val dataToSend = "Merhaba, SecondApplication!"
val intent = packageManager.getLaunchIntentForPackage("com.example.secondapp") //ikinci appId
if (intent != null){
intent.action = Intent.ACTION_SEND // Eylemi belirttik
intent.putExtra("myStringDataKey", dataToSend) // Veriyi Intent'e ekledik
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
}

}

🟧 Kodu biraz anlayalım;

İlk önce göndereceğim string verisine test için “Merhaba, SecondApplication!” set ettim, bu ikinci ekran açıldığında ekranda görünmesini beklediğim text olacak.
Daha sonra bu veriyi gönderebilmek için bir Intent oluşturdum.
Bu intent’i oluştururken veriyi göndermek istediğim ve etkileşimde bulunacağım uygulamanın applicationID değerini setledim.

Intent’in null olup olmadığını kontrol ettim ve null olmadığı durumda oluşturduğumuz intentin action yöntemini belirledim ve ardından putExtra ile göndereceğimiz string değerini key-value şeklinde setledim.

En son olarak da flag ekleyip activityi başlattım. Bu arada Intent.FLAG_ACTIVITY_NEW_TASK bayrağı kullanıldığında, hedef uygulama veya bileşen, mevcut görevin içinde değil, yeni bir görevin içinde başlatılır.

🟨 Şimdi SecondApp için yazacağımız kodlara bakalım 😊

SecondApp içinde ilk app’ten gelen intent’i MainActivity üzerinde yakalayabilecek bir kod yazalım;

val textView = findViewById<TextView>(R.id.textView)

val intent = intent
if (intent != null && intent.action != null ) {
val receivedData = intent.getStringExtra("myStringDataKey")
if (receivedData != null) {
textView.text = receivedData
}
}

🔵 Yine bir intent oluşturduk, ardından action olup olmadığını kontrol ettikten sonra oluşturduğumuz textView içerisine FirstApp’ ten gelen string verisini set ettik.

Böylece FirstApp’ten SecondApp’e veri aktarımını başarıyla gerçekleştirmiş olduk. Önemli olan, eylem adlarını ve Intent anahtarlarını iki uygulama arasında uyumlu şekilde kullanmanızdır. Bu sayede veri iletişimi sorunsuz bir şekilde gerçekleşir. Aynı adımlar ile bu sefer SecondApp’ten FirstApp’e veri aktarabilirsiniz.

Bir sonraki yazıda görüşmek üzere, iyi kodlamalar 😊

--

--