Niyet, bir uygulamayı nasıl kullanabileceğinizi açıklayarak
yapmak istediğiniz işlem, örneğin "harita görüntüleme" veya "şu an
resim", Intent
nesnesinin içinde. Bu amaç türü
bir uygulamayı belirtmediği için dolaylı intent olarak adlandırılır
bileşen bileşeni başlar, ancak bunun yerine bir işlem belirtir ve
işlemi gerçekleştirmek için gereken bazı verileri içerir.
startActivity()
adlı kişiyi aradığınızda
veya startActivityForResult()
ve ona örtülü bir niyet iletirseniz, sistem
çözümler
bir uygulama için
ilgili Activity
. Birden fazla uygulama varsa
işleyebilen bir iletişim kutusu gösterirse sistem,
kullanılacak uygulamayı seçin.
Bu sayfada, bir eylemde bulunmak için kullanabileceğiniz amacı işleyen uygulama türüne göre düzenlenmiş yaygın işlemler. Her biri Bu bölümde, bir satın alma işlemini nasıl amaç filtre uygulayın.
Dikkat: Cihazda bunu yapabilecek uygulamalar yoksa
örtülü bir intent alırsa (startActivity()
çağrısı yapıldığında uygulama kilitlenir). Öncelikle
niyeti almak için bir uygulama mevcut. Intent
nesnenizde resolveActivity()
komutunu çağırın. Sonuç null değilse en az
bu amacı işleyebilen bir uygulamadır ve startActivity()
adlı kişiyi çağırmak güvenlidir. Sonuç
null, amacı kullanmayın ve mümkünse
amaca hizmet eden
bir özellik olduğunu unutmayın.
Amaç veya intent filtreleri oluşturmayı bilmiyorsanız önce Amaçlar ve Amaçlar Filtreler.
Bu sayfada listelenen amaçların, geliştirme aşamasında nasıl tetikleneceğini öğrenmek için Android Hata Ayıklama ile amaçları doğrulama Köprü bölümü.
Google Sesli İşlemler
Google Voice İşlemler, şunlara yanıt olarak bu sayfada listelenen amaçlardan bazılarını tetikler: sesli komutlar. Daha fazla bilgi için bkz. Sistem Sesli İşlemlerini Kullanmaya Başlama
Çalar saat
İhtiyacınız olan bilgiler de dahil olmak üzere çalar saat uygulamalarıyla ilgili sık kullanılan işlemleri aşağıda bulabilirsiniz kullanarak uygulamanızın her bir işlemi yapma becerisini tanıtan bir intent filtresi oluşturun.
Alarm oluşturma
Yeni bir alarm oluşturmak için ACTION_SET_ALARM
uygulamasını kullanın
işlemi gerçekleştirebilir ve saat ve mesaj gibi alarm ayrıntılarını aşağıdaki ekstraları kullanarak belirleyebilirsiniz.
Not: Android 2.3 (API düzeyi 9) ve önceki sürümlerde yalnızca saat, dakika ve mesaj ekstraları kullanılabilir. Diğer ekstra özellikler platformu.
- İşlem
ACTION_SET_ALARM
- Veri URI'si
- Yok
- MIME Türü
- Yok
- Ek özellikler
-
EXTRA_HOUR
- Alarmın çalacağı saat.
EXTRA_MINUTES
- Alarmın dakikaları.
EXTRA_MESSAGE
- Alarmı tanımlamak için kullanılan özel bir mesaj.
EXTRA_DAYS
- Bu alarmın her hafta gününü içeren
ArrayList
tekrarlanır. Her gün,Calendar
içinden bir tam sayıyla tanımlanmalıdır sınıf, örneğinMONDAY
.Tek seferlik alarmlar için bu ekstra değeri belirtmeyin.
EXTRA_RINGTONE
- Alarmla kullanılacak zil sesini veya zil sesi olmadığında
VALUE_RINGTONE_SILENT
belirten bircontent:
URI.Varsayılan zil sesini kullanmak için bu ekstra zil sesini belirtmeyin.
EXTRA_VIBRATE
- Bu alarm için titreşip titreşmeyeceğini belirten bir boole değeri.
EXTRA_SKIP_UI
- Yanıt veren uygulamanın, alarmı ayarlarken kullanıcı arayüzünü atlamasının gerekip gerekmediğini belirten boole değeri. Doğru değerine ayarlanırsa uygulamanın, onay kullanıcı arayüzünü atlaması ve belirtilen alarmı ayarlaması gerekir.
Örnek amaç:
Kotlin
fun createAlarm(message: String, hour: Int, minutes: Int) { val intent = Intent(AlarmClock.ACTION_SET_ALARM).apply { putExtra(AlarmClock.EXTRA_MESSAGE, message) putExtra(AlarmClock.EXTRA_HOUR, hour) putExtra(AlarmClock.EXTRA_MINUTES, minutes) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void createAlarm(String message, int hour, int minutes) { Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM) .putExtra(AlarmClock.EXTRA_MESSAGE, message) .putExtra(AlarmClock.EXTRA_HOUR, hour) .putExtra(AlarmClock.EXTRA_MINUTES, minutes); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
ACTION_SET_ALARM
intent'ini çağırmak için uygulamanızın SET_ALARM
iznine sahip olması gerekir:
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.intent.action.SET_ALARM" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Zamanlayıcı oluştur
Geri sayım zamanlayıcı oluşturmak için ACTION_SET_TIMER
işlemini kullanın ve zamanlayıcı belirtin
süre gibi ayrıntılara yer verir.
Not: Bu amaç kullanılabilir Android 4.4 (API düzeyi 19) ve sonraki sürümlerde kullanılabilir.
- İşlem
ACTION_SET_TIMER
- Veri URI'si
- Yok
- MIME Türü
- Yok
- Ekstralar
-
EXTRA_LENGTH
- Zamanlayıcının saniye cinsinden uzunluğu.
EXTRA_MESSAGE
- Zamanlayıcıyı tanımlayan özel bir mesaj.
EXTRA_SKIP_UI
- Yanıt veren uygulamanın, zamanlayıcıyı ayarlarken kullanıcı arayüzünü atlamasının gerekip gerekmediğini belirten boole değeri. Doğru değerine ayarlanırsa uygulamanın, onay kullanıcı arayüzünü atlaması ve belirtilen zamanlayıcıyı başlatması gerekir.
Örnek amaç:
Kotlin
fun startTimer(message: String, seconds: Int) { val intent = Intent(AlarmClock.ACTION_SET_TIMER).apply { putExtra(AlarmClock.EXTRA_MESSAGE, message) putExtra(AlarmClock.EXTRA_LENGTH, seconds) putExtra(AlarmClock.EXTRA_SKIP_UI, true) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void startTimer(String message, int seconds) { Intent intent = new Intent(AlarmClock.ACTION_SET_TIMER) .putExtra(AlarmClock.EXTRA_MESSAGE, message) .putExtra(AlarmClock.EXTRA_LENGTH, seconds) .putExtra(AlarmClock.EXTRA_SKIP_UI, true); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
ACTION_SET_TIMER
amacını çağırmak için uygulamanızın şunlara sahip olması gerekir:
SET_ALARM
izni:
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.intent.action.SET_TIMER" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Tüm alarmları göster
Alarm listesini görmek için ACTION_SHOW_ALARMS
düğmesini kullanın
eyleme dökülebilir.
Bu amacı, öncelikli olarak sistem uygulamaları tarafından kullanıldığından çok fazla uygulama çağırmıyor olsa da çalar saat gibi çalışan tüm uygulamalar seçeneğini tıklayın ve mevcut alarmların listesini göstererek yanıt verin.
Not: Bu intent, Android 4.4 (API düzeyi 19) ve sonraki sürümlerde kullanılabilir.
- İşlem
ACTION_SHOW_ALARMS
- Veri URI'si
- Yok
- MIME Türü
- Yok
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.intent.action.SHOW_ALARMS" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Takvim
Etkinlik eklemek, takvim uygulamalarında sık kullanılan bir işlemdir. Uygulamanızın bu işlemi yapma becerisini tanıtmak için bilgilere daha ayrıntılı şekilde ulaşabilirsiniz.
Takvim etkinliği ekleme
Kullanıcının takvimine yeni bir etkinlik eklemek için
ACTION_INSERT
eyleme geçin ve veri URI'sini şunu kullanarak belirtin:
Events.CONTENT_URI
.
Ardından aşağıdaki ekstraları kullanarak çeşitli etkinlik ayrıntılarını belirtebilirsiniz.
- İşlem
ACTION_INSERT
- Veri URI'si
Events.CONTENT_URI
- MIME Türü
"vnd.android.cursor.dir/event"
- Ekstralar
-
EXTRA_EVENT_ALL_DAY
- Bunun tüm gün süren bir etkinlik olup olmadığını belirten bir boole değeri.
EXTRA_EVENT_BEGIN_TIME
- Etkinliğin başlangıç zamanı (dönemden bu yana geçen milisaniyeler).
EXTRA_EVENT_END_TIME
- Etkinliğin bitiş zamanı (dönemden bu yana geçen milisaniye sayısı).
TITLE
- Etkinliğin başlığı.
DESCRIPTION
- Etkinlik açıklaması.
EVENT_LOCATION
- Etkinlik yeri.
EXTRA_EMAIL
- Davetlileri belirten e-posta adreslerinin virgülle ayrılmış listesi.
CalendarContract.EventsColumns
sınıfında tanımlanan sabitler kullanılarak daha birçok etkinlik ayrıntısı belirtilebilir.
Örnek amaç:
Kotlin
fun addEvent(title: String, location: String, begin: Long, end: Long) { val intent = Intent(Intent.ACTION_INSERT).apply { data = Events.CONTENT_URI putExtra(Events.TITLE, title) putExtra(Events.EVENT_LOCATION, location) putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin) putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void addEvent(String title, String location, long begin, long end) { Intent intent = new Intent(Intent.ACTION_INSERT) .setData(Events.CONTENT_URI) .putExtra(Events.TITLE, title) .putExtra(Events.EVENT_LOCATION, location) .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin) .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.intent.action.INSERT" /> <data android:mimeType="vnd.android.cursor.dir/event" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Kamera
İhtiyacınız olan bilgiler de dahil olmak üzere, kamera uygulamalarıyla ilgili sık yapılan işlemler aşağıda verilmiştir. kullanarak uygulamanızın her bir işlemi yapma becerisini tanıtan bir intent filtresi oluşturun.
Resim veya video çekip iade etme
Bir kamera uygulamasını açıp bunun sonucunda ortaya çıkan fotoğraf veya videoyu almak için ACTION_IMAGE_CAPTURE
ya da ACTION_VIDEO_CAPTURE
işlemini kullanın. Ayrıca, eklemek istediğiniz URI konumunu da
Örneğin, fotoğraf veya videoyu kaydetmek için EXTRA_OUTPUT
bölümüne
ekstra
- İşlem
ACTION_IMAGE_CAPTURE
veya
ACTION_VIDEO_CAPTURE
- Veri URI Şeması
- Yok
- MIME Türü
- Yok
- Ekstralar
-
EXTRA_OUTPUT
- Kamera uygulamasının fotoğrafı kaydettiği URI konumu veya
video dosyası (
Uri
nesnesi olarak) yükleyin.
Kamera uygulaması başarıyla geri döndüğünde
etkinliğinize odaklanır (başka bir deyişle, uygulamanız onActivityResult()
geri arama alır)
fotoğraf veya videoya belirttiğiniz URI üzerinden erişebilir
EXTRA_OUTPUT
değerini kullanın.
Not: ACTION_IMAGE_CAPTURE
kullandığınızda
fotoğraf çekmek için kullanıyorsanız kamera da bir
Intent
sonucundaki fotoğrafın küçültülmüş kopyası veya küçük resmi, şu ada sahip fazladan bir alanda Bitmap
olarak kaydedilir:
"data"
.
Örnek amaç:
Kotlin
const val REQUEST_IMAGE_CAPTURE = 1 val locationForPhotos: Uri = ... fun capturePhoto(targetFilename: String) { val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE).apply { putExtra(MediaStore.EXTRA_OUTPUT, Uri.withAppendedPath(locationForPhotos, targetFilename)) } if (intent.resolveActivity(packageManager) != null) { startActivityForResult(intent, REQUEST_IMAGE_CAPTURE) } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK) { val thumbnail: Bitmap = data.getParcelableExtra("data") // Do other work with full size photo saved in locationForPhotos. ... } }
Java
static final int REQUEST_IMAGE_CAPTURE = 1; static final Uri locationForPhotos; public void capturePhoto(String targetFilename) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.withAppendedPath(locationForPhotos, targetFilename)); if (intent.resolveActivity(getPackageManager()) != null) { startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Bitmap thumbnail = data.getParcelableExtra("data"); // Do other work with full size photo saved in locationForPhotos. ... } }
Android 12 (API düzeyi 31) veya sonraki sürümlerde çalışırken bunu yapmak için aşağıdaki intent örneğine bakın.
Örnek amaç:
Kotlin
val REQUEST_IMAGE_CAPTURE = 1 private fun dispatchTakePictureIntent() { val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) try { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE) } catch (e: ActivityNotFoundException) { // Display error state to the user. } }
Java
static final int REQUEST_IMAGE_CAPTURE = 1; private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); try { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } catch (ActivityNotFoundException e) { // Display error state to the user. } } </section></div>
Aşağıdakiler dahil olmak üzere fotoğraf çekmek için bu amacın nasıl kullanılacağı hakkında daha fazla bilgi:
çıkış konumu için uygun bir Uri
oluşturma,
Fotoğraf çekin veya
Video çekin.
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.media.action.IMAGE_CAPTURE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Bu niyeti işlerken etkinliğinizin gelen Intent
içindeki EXTRA_OUTPUT
ekstrayı kontrol etmesini sağlayın, ardından yakalanan görüntüyü veya videoyu
konumu bu ekstra ile belirtildiğinden emin olun ve setResult()
öğesini ekstra bir öğede sıkıştırılmış küçük resim içeren bir Intent
ile çağırın.
"data"
adlı.
Hareketsiz görüntü modunda kamera uygulaması başlatma
Bir kamera uygulamasını hareketsiz görüntü modunda açmak için INTENT_ACTION_STILL_IMAGE_CAMERA
işlemini kullanın.
- İşlem
INTENT_ACTION_STILL_IMAGE_CAMERA
- Veri URI Şeması
- Yok
- MIME Türü
- Yok
- Ekstralar
- Yok
Örnek amaç:
Kotlin
private fun dispatchTakePictureIntent() { val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) try { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE) } catch (e: ActivityNotFoundException) { // Display error state to the user. } }
Java
public void capturePhoto(String targetFilename) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.withAppendedPath(locationForPhotos, targetFilename)); if (intent.resolveActivity(getPackageManager()) != null) { startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); } }
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.media.action.STILL_IMAGE_CAMERA" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Video modunda kamera uygulaması başlatma
Bir kamera uygulamasını video modunda açmak için INTENT_ACTION_VIDEO_CAMERA
işlemini kullanın.
- İşlem
INTENT_ACTION_VIDEO_CAMERA
- Veri URI Şeması
- Yok
- MIME Türü
- Yok
- Ekstralar
- Yok
Örnek amaç:
Kotlin
fun capturePhoto() { val intent = Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA) if (intent.resolveActivity(packageManager) != null) { startActivityForResult(intent, REQUEST_IMAGE_CAPTURE) } }
Java
public void capturePhoto() { Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA); if (intent.resolveActivity(getPackageManager()) != null) { startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); } }
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.media.action.VIDEO_CAMERA" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Kişiler/kişiler uygulaması
İhtiyacınız olan bilgiler de dahil olmak üzere kişi yönetimi uygulamaları için sık kullanılan işlemler kullanarak uygulamanızın her bir işlemi yapma becerisini tanıtan bir intent filtresi oluşturun.
Kişi seçin
Kullanıcının bir kişi seçmesini ve uygulamanıza tüm iletişim bilgilerine erişim izni vermesini sağlamak için ACTION_PICK
işlemini kullanın ve MIME türünü Contacts.CONTENT_TYPE
olarak belirtin.
onActivityResult()
geri aramanıza iletilen Intent
sonucu,
Seçilen kişiye işaret eden content:
URI'si. Yanıt
Kişiler Sağlayıcı API'sini kullanarak söz konusu kişiyi okumak için uygulamanızın geçici izinleri
uygulamanız READ_CONTACTS
iznini içermiyor.
İpucu: Yalnızca belirli bir kişiye erişmeniz gerekiyorsa bilgileri (ör. telefon numarası veya e-posta adresi) Gmail'de belirli kişi verilerini seçin.
- İşlem
ACTION_PICK
- Veri URI Şeması
- Yok
- MIME Türü
Contacts.CONTENT_TYPE
Örnek amaç:
Kotlin
const val REQUEST_SELECT_CONTACT = 1 fun selectContact() { val intent = Intent(Intent.ACTION_PICK).apply { type = ContactsContract.Contacts.CONTENT_TYPE } if (intent.resolveActivity(packageManager) != null) { startActivityForResult(intent, REQUEST_SELECT_CONTACT) } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { if (requestCode == REQUEST_SELECT_CONTACT && resultCode == RESULT_OK) { val contactUri: Uri = data.data // Do something with the selected contact at contactUri. //... } }
Java
static final int REQUEST_SELECT_CONTACT = 1; public void selectContact() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(ContactsContract.Contacts.CONTENT_TYPE); if (intent.resolveActivity(getPackageManager()) != null) { startActivityForResult(intent, REQUEST_SELECT_CONTACT); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_SELECT_CONTACT && resultCode == RESULT_OK) { Uri contactUri = data.getData(); // Do something with the selected contact at contactUri. ... } }
Kişi URI'sını edindikten sonra kişi ayrıntılarını nasıl alacağınız hakkında bilgi için Ayrıntıları alma hakkında bilgi edinin iletişim bilgileri kullanılabilir.
Bu amacı kullanarak kişi URI'sı aldığınızda genellikle
gerekir
READ_CONTACTS
kişinin görünen adı ve iletişim bilgileri gibi temel ayrıntılarını okuma izni
kişinin yıldızlı olup olmadığı. Bununla birlikte,
belirli bir kişi hakkında daha ayrıntılı veriler okuma (ör.
Google Merchant Center'a giriş yapmak için READ_CONTACTS
gereklidir.
izni gerekir.
Belirli kişi verilerini seç
Kullanıcının bir kişiden belirli bir bilgiyi seçmesini sağlamak için, örneğin
telefon numarası, e-posta adresi veya başka bir veri türü,
ACTION_PICK
işlemi ve MIME türünü bir olarak belirtin
şu içerik türlerinden birini seçin:
Kişinin telefon numarasını almak için CommonDataKinds.Phone.CONTENT_TYPE
.
Not: Birçok durumda, uygulamanızın
READ_CONTACTS
Belirli bir kişi hakkındaki belirli bilgileri görüntüleme izni.
Bir kişiden yalnızca bir tür veri almanız gerekiyorsa ContactsContract.CommonDataKinds
sınıflarından bir CONTENT_TYPE
içeren bu teknik, önceki bölümde gösterildiği gibi Contacts.CONTENT_TYPE
kullanmaya kıyasla daha verimlidir. Sonuç, Kişi Sağlayıcı için daha karmaşık bir sorgu gerçekleştirmenize gerek kalmadan istediğiniz verilere doğrudan erişim sağlar.
onActivityResult()
geri aramanıza iletilen Intent
sonucu,
Seçilen kişi verilerine işaret eden content:
URI'si. Yanıt
uygulamanızda READ_CONTACTS
iznini içermese bile bu kişi verilerini okumak için gereken geçici izinler.
- İşlem
ACTION_PICK
- Veri URI Şeması
- Yok
- MIME Türü
-
CommonDataKinds.Phone.CONTENT_TYPE
- Telefon numarası olan kişilerden seçim yapın.
CommonDataKinds.Email.CONTENT_TYPE
- E-posta adresi olan kişilerden seçim yapın.
CommonDataKinds.StructuredPostal.CONTENT_TYPE
- Posta adresi olan kişilerden seçin.
Veya diğer birçok
CONTENT_TYPE
değerinden biriContactsContract
altında.
Örnek amaç:
Kotlin
const val REQUEST_SELECT_PHONE_NUMBER = 1 fun selectContact() { // Start an activity for the user to pick a phone number from contacts. val intent = Intent(Intent.ACTION_PICK).apply { type = CommonDataKinds.Phone.CONTENT_TYPE } if (intent.resolveActivity(packageManager) != null) { startActivityForResult(intent, REQUEST_SELECT_PHONE_NUMBER) } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { if (requestCode == REQUEST_SELECT_PHONE_NUMBER && resultCode == Activity.RESULT_OK) { // Get the URI and query the content provider for the phone number. val contactUri: Uri = data.data val projection: Array<String> = arrayOf(CommonDataKinds.Phone.NUMBER) contentResolver.query(contactUri, projection, null, null, null).use { cursor -> // If the cursor returned is valid, get the phone number. if (cursor.moveToFirst()) { val numberIndex = cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER) val number = cursor.getString(numberIndex) // Do something with the phone number. ... } } } }
Java
static final int REQUEST_SELECT_PHONE_NUMBER = 1; public void selectContact() { // Start an activity for the user to pick a phone number from contacts. Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(CommonDataKinds.Phone.CONTENT_TYPE); if (intent.resolveActivity(getPackageManager()) != null) { startActivityForResult(intent, REQUEST_SELECT_PHONE_NUMBER); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_SELECT_PHONE_NUMBER && resultCode == RESULT_OK) { // Get the URI and query the content provider for the phone number. Uri contactUri = data.getData(); String[] projection = new String[]{CommonDataKinds.Phone.NUMBER}; Cursor cursor = getContentResolver().query(contactUri, projection, null, null, null); // If the cursor returned is valid, get the phone number. if (cursor != null && cursor.moveToFirst()) { int numberIndex = cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER); String number = cursor.getString(numberIndex); // Do something with the phone number. //... } } }
Bir kişiyi görüntüleme
Bilinen bir kişinin ayrıntılarını görüntülemek için ACTION_VIEW
işlemini kullanın ve intent verileri olarak kişiyi content:
URI'siyle belirtin.
Kişinin URI'sını ilk olarak almanın iki temel yolu vardır:
ACTION_PICK
işleminin döndürdüğü kişi URI'sini kullanın ilgili reklam grubudur. Bu yaklaşım herhangi bir uygulama izni gerektirmez.-
kişiler listesine ekleyin. Bu yaklaşım
READ_CONTACTS
gerektirir izni gerekir.
- İşlem
ACTION_VIEW
- Veri URI Şeması
content:<URI>
- MIME Türü
- Yok. Tür, kişi URI'sinden belirlenir.
Örnek intent:
Kotlin
fun viewContact(contactUri: Uri) { val intent = Intent(Intent.ACTION_VIEW, contactUri) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void viewContact(Uri contactUri) { Intent intent = new Intent(Intent.ACTION_VIEW, contactUri); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Mevcut bir kişiyi düzenleme
Bilinen bir kişiyi düzenlemek için ACTION_EDIT
aracını kullanın
eylem, kişiyi bir content:
URI ile belirtin
amaç verileri olarak kullanmalı ve bilinen iletişim bilgilerini
ContactsContract.Intents.Insert
için sabit değerler.
Kişi URI'sini ilk olarak almanın iki temel yolu vardır:
ACTION_PICK
işleminin döndürdüğü kişi URI'sini kullanın ilgili reklam grubudur. Bu yaklaşım herhangi bir uygulama izni gerektirmez.- Kişiler listesini alma bölümünde açıklandığı gibi, tüm kişilerin listesine doğrudan erişin. Bu yaklaşım
READ_CONTACTS
gerektirir izni gerekir.
- İşlem
ACTION_EDIT
- Veri URI Şeması
content:<URI>
- MIME Türü
- Tür, kişi URI'sinden belirlenir.
- Ek özellikler
- İletişim bilgileri alanlarının doldurulması için
ContactsContract.Intents.Insert
içinde tanımlanan ekstralardan biri veya daha fazlası.
Örnek amaç:
Kotlin
fun editContact(contactUri: Uri, email: String) { val intent = Intent(Intent.ACTION_EDIT).apply { data = contactUri putExtra(ContactsContract.Intents.Insert.EMAIL, email) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void editContact(Uri contactUri, String email) { Intent intent = new Intent(Intent.ACTION_EDIT); intent.setData(contactUri); intent.putExtra(Intents.Insert.EMAIL, email); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Bir kişiyi düzenleme hakkında daha fazla bilgi için Değiştirme amaç kullanan kişilerdir.
Kişi ekle
Yeni bir kişi eklemek için ACTION_INSERT
işlemini kullanın, MIME türü olarak Contacts.CONTENT_TYPE
'yi belirtin ve bilinen tüm iletişim bilgilerini ContactsContract.Intents.Insert
içindeki sabitlerle belirtilen ekstralara ekleyin.
- İşlem
ACTION_INSERT
- Veri URI Şeması
- Yok
- MIME Türü
Contacts.CONTENT_TYPE
- Ek özellikler
ContactsContract.Intents.Insert
içinde tanımlanan ek özelliklerden biri veya daha fazlası.
Örnek amaç:
Kotlin
fun insertContact(name: String, email: String) { val intent = Intent(Intent.ACTION_INSERT).apply { type = ContactsContract.Contacts.CONTENT_TYPE putExtra(ContactsContract.Intents.Insert.NAME, name) putExtra(ContactsContract.Intents.Insert.EMAIL, email) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void insertContact(String name, String email) { Intent intent = new Intent(Intent.ACTION_INSERT); intent.setType(Contacts.CONTENT_TYPE); intent.putExtra(Intents.Insert.NAME, name); intent.putExtra(Intents.Insert.EMAIL, email); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Kişi ekleme hakkında daha fazla bilgi için Değiştirme amaç kullanan kişilerdir.
E-posta
İsteğe bağlı ekler içeren bir e-posta oluşturmak, e-posta uygulamalarında sık yapılan bir işlemdir. Uygulamanızın bu işlemi yapma becerisini tanıtmak için bilgilere daha ayrıntılı şekilde ulaşabilirsiniz.
İsteğe bağlı ekleri olan bir e-posta oluşturma
E-posta oluşturmak için ek ekleyip eklemeyeceğinize bağlı olarak aşağıdaki işlemlerden birini kullanın ve listelenen ek tuşlarla alıcı ve konu gibi e-posta ayrıntılarını ekleyin.
- İşlem
ACTION_SENDTO
(ek olmadığında) veya
ACTION_SEND
(bir ek için) veya
ACTION_SEND_MULTIPLE
(birden çok ek için)- Veri URI Şeması
- Yok
- MIME Türü
-
"text/plain"
"*/*"
- Ek özellikler
-
Intent.EXTRA_EMAIL
- Tüm "Alıcı" alıcısı e-posta adreslerinin dize dizisi.
Intent.EXTRA_CC
- Tüm "CC"leri içeren bir dize dizisi alıcı e-posta adresleri.
Intent.EXTRA_BCC
- Tüm "BCC" alıcısı e-posta adreslerinin dize dizisi.
Intent.EXTRA_SUBJECT
- E-posta konusunu içeren bir dize.
Intent.EXTRA_TEXT
- E-postanın gövdesini içeren bir dize.
Intent.EXTRA_STREAM
- Eki gösteren bir
Uri
.ACTION_SEND_MULTIPLE
Bu, onun yerine birArrayList
içeren birden çokUri
nesnesi.
Örnek amaç:
Kotlin
fun composeEmail(addresses: Array<String>, subject: String, attachment: Uri) { val intent = Intent(Intent.ACTION_SEND).apply { type = "*/*" putExtra(Intent.EXTRA_EMAIL, addresses) putExtra(Intent.EXTRA_SUBJECT, subject) putExtra(Intent.EXTRA_STREAM, attachment) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void composeEmail(String[] addresses, String subject, Uri attachment) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("*/*"); intent.putExtra(Intent.EXTRA_EMAIL, addresses); intent.putExtra(Intent.EXTRA_SUBJECT, subject); intent.putExtra(Intent.EXTRA_STREAM, attachment); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Niyetinizin bir web sitesi tarafından değil, yalnızca bir e-posta uygulaması tarafından işlendiğinden emin olmak
kısa mesaj veya sosyal medya uygulamasına gidin, ardından ACTION_SENDTO
işlemini kullanın
ve aşağıdaki örnekte gösterildiği gibi "mailto:"
veri şemasını dahil edin:
Kotlin
fun composeEmail(addresses: Array<String>, subject: String) { val intent = Intent(Intent.ACTION_SENDTO).apply { data = Uri.parse("mailto:") // Only email apps handle this. putExtra(Intent.EXTRA_EMAIL, addresses) putExtra(Intent.EXTRA_SUBJECT, subject) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void composeEmail(String[] addresses, String subject) { Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setData(Uri.parse("mailto:")); // Only email apps handle this. intent.putExtra(Intent.EXTRA_EMAIL, addresses); intent.putExtra(Intent.EXTRA_SUBJECT, subject); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.intent.action.SEND" /> <data android:type="*/*" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SENDTO" /> <data android:scheme="mailto" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Dosya depolama
İhtiyaç duyduğunuz bilgileri de içeren dosya depolama uygulamaları için genel işlemler aşağıda verilmiştir kullanarak uygulamanızın her bir işlemi yapma becerisini tanıtan bir intent filtresi oluşturun.
Belirli bir dosya türünü alma
Kullanıcıdan doküman veya fotoğraf gibi bir dosya seçmesini istemek ve
uygulamanız için ACTION_GET_CONTENT
işlemini kullanın ve
MIME türü. Uygulamanıza döndürülen dosya referansı, etkinliğinizin mevcut durumuna geçici
Bu nedenle, dosyaya daha sonra erişmek isterseniz
daha sonra okuyabileceğiniz bir kopyayı içe aktarmanız gerekir.
Bu amaç, kullanıcının süreçte yeni bir dosya oluşturmasına da olanak tanır. Örneğin, mevcut bir fotoğrafı seçmek yerine kullanıcı kamerayla yeni bir fotoğraf çekebilir.
onActivityResult()
yönteminize iletilen sonuç amacı, dosyayı işaret eden bir URI içeren veriler içerir.
URI; http:
URI, file:
URI veya content:
gibi herhangi bir şey olabilir.
URI. Ancak, seçilebilir dosyaları yalnızca erişilebilir olanlarla sınırlamak istiyorsanız
bir içerik sağlayıcıdan (content:
URI) gelen ve
openFileDescriptor()
,
ekle
CATEGORY_OPENABLE
kategorisini amacınıza uygun şekilde değiştirebilirsiniz.
Android 4.3 (API düzeyi 18) ve sonraki sürümlerde
kullanıcının birden fazla dosya seçmesine izin verebilirsiniz.
Amaca EXTRA_ALLOW_MULTIPLE
, true
olarak ayarlandı.
Ardından, getClipData()
tarafından döndürülen bir ClipData
nesnesinde seçili dosyaların her birine erişebilirsiniz.
- İşlem
ACTION_GET_CONTENT
- Veri URI Şeması
- Yok
- MIME Türü
- Kullanıcının seçmesi gereken dosya türüne karşılık gelen MIME türü.
- Ekstralar
-
EXTRA_ALLOW_MULTIPLE
- Kullanıcının tek seferde birden fazla dosya seçip seçemeyeceğini belirten bir boole değeri.
EXTRA_LOCAL_ONLY
- Döndürülen dosyanın doğrudan cihazınıza geri yükleyebilirsiniz.
- Kategori (isteğe bağlı)
-
CATEGORY_OPENABLE
- Yalnızca "açılabilir" öğe ayarını döndürmek için dosya akışı olarak temsil edilebilecek dosyalar
openFileDescriptor()
ile.
Fotoğraf çekmek için örnek intent:
Kotlin
const val REQUEST_IMAGE_GET = 1 fun selectImage() { val intent = Intent(Intent.ACTION_GET_CONTENT).apply { type = "image/*" } if (intent.resolveActivity(packageManager) != null) { startActivityForResult(intent, REQUEST_IMAGE_GET) } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { if (requestCode == REQUEST_IMAGE_GET && resultCode == Activity.RESULT_OK) { val thumbnail: Bitmap = data.getParcelableExtra("data") val fullPhotoUri: Uri = data.data // Do work with photo saved at fullPhotoUri. ... } }
Java
static final int REQUEST_IMAGE_GET = 1; public void selectImage() { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); if (intent.resolveActivity(getPackageManager()) != null) { startActivityForResult(intent, REQUEST_IMAGE_GET); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_IMAGE_GET && resultCode == RESULT_OK) { Bitmap thumbnail = data.getParcelable("data"); Uri fullPhotoUri = data.getData(); // Do work with photo saved at fullPhotoUri. ... } }
Fotoğraf döndürmek için örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.intent.action.GET_CONTENT" /> <data android:type="image/*" /> <category android:name="android.intent.category.DEFAULT" /> <!-- The OPENABLE category declares that the returned file is accessible from a content provider that supportsOpenableColumns
andContentResolver.openFileDescriptor()
. --> <category android:name="android.intent.category.OPENABLE" /> </intent-filter> </activity>
Belirli bir dosya türünü açma
Android 4.4 veya sonraki sürümlerde çalışırken ACTION_GET_CONTENT
işlemini kullanarak uygulamanıza içe aktarmanız gereken bir dosyanın kopyasını almak yerine ACTION_OPEN_DOCUMENT
işlemini kullanarak ve bir MIME türü belirterek başka bir uygulama tarafından yönetilen bir dosyayı açma isteğinde bulunabilirsiniz.
Kullanıcının da uygulamanızın yazabileceği yeni bir doküman oluşturmasına izin vermek için bunun yerine ACTION_CREATE_DOCUMENT
işlemini kullanın.
Örneğin, ACTION_CREATE_DOCUMENT
amacı, mevcut PDF dokümanlarından seçim yapmak yerine kullanıcıların yeni bir doküman oluşturmak istedikleri yeri (ör. dokümanın depolama alanını yöneten başka bir uygulama) seçmesine olanak tanır. Daha sonra, uygulamanız
yeni dokümanı yazabilir.
ACTION_GET_CONTENT
işleminden onActivityResult()
yönteminize iletilen intent herhangi bir türde bir URI döndürebilirken ACTION_OPEN_DOCUMENT
ve ACTION_CREATE_DOCUMENT
'dan gelen sonuç intent'i, seçilen dosyayı her zaman DocumentsProvider
tarafından desteklenen bir content:
URI olarak belirtir. Tarayıcı
openFileDescriptor()
ve içeren dosya
DocumentsContract.Document
sütunundaki sütunları kullanarak ayrıntılarını sorgulayabilir.
Döndürülen URI, uygulamanıza dosyaya uzun süreli okuma erişimi (veya yazma erişimi de olabilir) verir. ACTION_OPEN_DOCUMENT
işlemi, özellikle mevcut bir dosyayı uygulamanıza kopyalamadan okumak veya dosyayı yerinde açıp düzenlemek istediğinizde yararlıdır.
Kullanıcının birden fazla dosya seçmesine izin vermek için
Amaca EXTRA_ALLOW_MULTIPLE
, true
olarak ayarlandı.
Kullanıcı yalnızca bir öğe seçerse öğeyi getData()
üzerinden alabilirsiniz.
Kullanıcı birden fazla öğe seçerse getData()
null değerini döndürür ve bunun yerine
ClipData
içinden her öğeyi al
getClipData()
tarafından döndürülen nesnedir.
Not: Amacınız bir MIME türü belirtmelidir ve
CATEGORY_OPENABLE
kategorisini beyan etmesi gerekir. Eğer
Bir MIME türü dizisi ekleyerek birden fazla MIME türü belirtebilirsiniz.
EXTRA_MIME_TYPES
ekstra - Bu durumda
setType()
- "*/*"
aralığındaki birincil MIME türü.
- İşlem
ACTION_OPEN_DOCUMENT
veya
ACTION_CREATE_DOCUMENT
- Veri URI Şeması
- Yok
- MIME Türü
- Kullanıcının seçmesi gereken dosya türüne karşılık gelen MIME türü.
- Ek özellikler
-
EXTRA_MIME_TYPES
- Uygulamanızın kullandığı dosya türlerine karşılık gelen bir MIME türü dizisi
üzerine konuşacağız. Bu ekstrayı kullandığınızda birincil MIME türünü şurada ayarlamanız gerekir:
setType()
-"*/*"
. EXTRA_ALLOW_MULTIPLE
- Kullanıcının tek seferde birden fazla dosya seçip seçemeyeceğini belirten bir boole değeri.
EXTRA_TITLE
- İlk dosya adını belirtmek için
ACTION_CREATE_DOCUMENT
ile birlikte kullanılır. EXTRA_LOCAL_ONLY
- Döndürülen dosyanın doğrudan cihazınıza geri yükleyebilirsiniz.
- Kategori
-
CATEGORY_OPENABLE
- Yalnızca "açılabilir" öğe ayarını döndürmek için dosya akışı olarak temsil edilebilecek dosyalar
openFileDescriptor()
ile.
Fotoğraf çekme amacına örnek:
Kotlin
const val REQUEST_IMAGE_OPEN = 1 fun selectImage2() { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { type = "image/*" addCategory(Intent.CATEGORY_OPENABLE) } // Only the system receives the ACTION_OPEN_DOCUMENT, so no need to test. startActivityForResult(intent, REQUEST_IMAGE_OPEN) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { if (requestCode == REQUEST_IMAGE_OPEN && resultCode == Activity.RESULT_OK) { val fullPhotoUri: Uri = data.data // Do work with full size photo saved at fullPhotoUri. ... } }
Java
static final int REQUEST_IMAGE_OPEN = 1; public void selectImage() { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.setType("image/*"); intent.addCategory(Intent.CATEGORY_OPENABLE); // Only the system receives the ACTION_OPEN_DOCUMENT, so no need to test. startActivityForResult(intent, REQUEST_IMAGE_OPEN); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_IMAGE_OPEN && resultCode == RESULT_OK) { Uri fullPhotoUri = data.getData(); // Do work with full size photo saved at fullPhotoUri. ... } }
Üçüncü taraf uygulamaları
ACTION_OPEN_DOCUMENT
işlem. Bunun yerine sistem bu intent'i alır ve çeşitli uygulamalarda bulunan tüm dosyaları birleşik bir kullanıcı arayüzünde gösterir.
Uygulamanızın dosyalarını bu kullanıcı arayüzünde sağlamak ve diğer uygulamaların açmasına izin vermek için
DocumentsProvider
ve şunlar için bir intent filtresi ekleyin:
PROVIDER_INTERFACE
("android.content.action.DOCUMENTS_PROVIDER"
), aşağıdaki örnekte gösterildiği gibi:
<provider ... android:grantUriPermissions="true" android:exported="true" android:permission="android.permission.MANAGE_DOCUMENTS"> <intent-filter> <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> </intent-filter> </provider>
Uygulamanız tarafından yönetilen dosyaları diğer uygulamalardan açılabilir hale getirme hakkında daha fazla bilgi için Depolama alanı erişim çerçevesini kullanarak dosyaları açma başlıklı makaleyi okuyun.
Yerel işlemler
Araç çağırmak sık rastlanan bir yerel işlemdir. Uygulamanızın reklamını yapmak için bir intent filtresi oluşturun aşağıdaki bölümde yer alan bilgileri kullanarak bu işlemi gerçekleştirme olanağınız vardır.
Araç çağırma
Bir taksi çağırmak için
ACTION_RESERVE_TAXI_RESERVATION
eyleme dökülebilir.
Not: Uygulamalar kullanıcıdan onay istemelidir yapmanız gerektiğini unutmayın.
- İşlem
ACTION_RESERVE_TAXI_RESERVATION
- Veri URI'si
- Yok
- MIME Türü
- Yok
- Ekstralar
- Yok
Örnek amaç:
Kotlin
fun callCar() { val intent = Intent(ReserveIntents.ACTION_RESERVE_TAXI_RESERVATION) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void callCar() { Intent intent = new Intent(ReserveIntents.ACTION_RESERVE_TAXI_RESERVATION); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="com.google.android.gms.actions.RESERVE_TAXI_RESERVATION" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Haritalar
Haritada konum göstermek, harita uygulamaları için sık kullanılan bir işlemdir. Uygulamanızın bu işlemi yapma becerisini tanıtmak için bilgilere daha ayrıntılı şekilde ulaşabilirsiniz.
Bir konumu haritada gösterme
Bir haritayı açmak için ACTION_VIEW
işlemini kullanın ve
aşağıdaki şemalardan biriyle amaç verilerindeki konum bilgilerini sağlayın.
- İşlem
ACTION_VIEW
- Veri URI Şeması
-
geo:latitude,longitude
- Haritayı belirtilen boylam ve enlemde gösterin.
Örnek:
"geo:47.6,-122.3"
geo:latitude,longitude?z=zoom
- Haritayı belirli bir yakınlaştırma düzeyinde, belirtilen boylam ve enlemde gösterin. Yakınlaştırma düzeyi
1, tüm Dünya'yı belirtilen enlem,lng cinsinden ortalanmış olarak gösterir. En yüksek (en yakın) yakınlaştırma seviyesi 23'tür.
Örnek:
"geo:47.6,-122.3?z=11"
geo:0,0?q=lat,lng(label)
- Haritayı belirtilen boylam ve enlemde, dize etiketiyle gösterin.
Örnek:
"geo:0,0?q=34.99,-106.61(Treasure)"
geo:0,0?q=my+street+address
- "Açık adresim" bölümünün konumunu göster. Bu, belirli bir adres veya konum sorgusu olabilir.
Örnek:
"geo:0,0?q=1600+Amphitheatre+Parkway%2C+CA"
Not:
geo
URI'sinde geçirilen tüm dizeler kodlanmalıdır. Örneğin,1st & Pike, Seattle
dizesi1st%20%26%20Pike%2C%20Seattle
. Dizedeki boşluklar%20
veya artı işareti (+
) ile değiştirin.
- MIME Türü
- Yok
Örnek amaç:
Kotlin
fun showMap(geoLocation: Uri) { val intent = Intent(Intent.ACTION_VIEW).apply { data = geoLocation } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void showMap(Uri geoLocation) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(geoLocation); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:scheme="geo" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Müzik veya video
İhtiyacınız olan bilgiler de dahil olmak üzere müzik ve video uygulamalarıyla ilgili sık kullanılan işlemler aşağıda belirtilmiştir. kullanarak uygulamanızın her bir işlemi yapma becerisini tanıtan bir intent filtresi oluşturun.
Medya dosyası oynatma
Bir müzik dosyasını çalmak için ACTION_VIEW
işlemini kullanın ve
intent verilerinde dosyanın URI konumunu belirtin.
- İşlem
ACTION_VIEW
- Veri URI Şeması
-
file:<URI>
content:<URI>
http:<URL>
- MIME Türü
-
"audio/*"
"application/ogg"
"application/x-ogg"
"application/itunes"
- Veya uygulamanızın gerektirdiği diğer herhangi bir şey.
Örnek amaç:
Kotlin
fun playMedia(file: Uri) { val intent = Intent(Intent.ACTION_VIEW).apply { data = file } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void playMedia(Uri file) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(file); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:type="audio/*" /> <data android:type="application/ogg" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Arama sorgusuna göre müzik çalma
Bir arama sorgusuna göre müzik çalmak için şunu kullanın:
INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
intent. Bir uygulama etkinleşebilir
kullanıcının müzik çalma komutuna karşılık vermek için bu amaca yönelik bir uygulamadır. Bunun için alıcı uygulama
intent, mevcut içeriği belirtilen sorguyla eşleştirmek için envanterinde bir arama yapar ve
içeriği oynatmaya başlar.
Bu amaca EXTRA_MEDIA_FOCUS
dizesini ekleyin
ekstra (amaçlanan arama modunu belirtir). Örneğin, arama modu,
bir sanatçı adı veya şarkı adı aranıyor.
- İşlem
INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
- Veri URI Şeması
- Yok
- MIME Türü
- Yok
- Ekstralar
-
MediaStore.EXTRA_MEDIA_FOCUS
(zorunlu)-
Arama modunu gösterir: Kullanıcının belirli bir sanatçıyı, albümü, şarkıyı veya seçin. Çoğu arama modu ek ekstra özellikler gerektirir. Örneğin, kullanıcı belirli bir şarkıyı dinlemek istiyorsa niyete üç ek bilgi eklenebilir: şarkının adı, sanatçısı ve albümü. Bu amaç, şunlar için aşağıdaki arama modlarını destekler: her
EXTRA_MEDIA_FOCUS
değeri:Tümü -
"vnd.android.cursor.item/*"
-
Tüm müzikleri çal. Alıcı uygulama, akıllı seçime dayalı olarak biraz müzik çalar. Örneğin: kullanıcının dinlediği son oynatma listesi olarak ayarlanır.
Ek ekstralar:
QUERY
(gerekli): Boş dize. Bu ekstra, her zaman geriye dönük uyumluluk için sağlanır. Arama modları hakkında bilgi sahibi olmayan mevcut uygulamalar bu amacı yapılandırılmamış bir arama olarak işler.
Yapılandırılmamış -
"vnd.android.cursor.item/*"
-
Yapılandırılmamış arama sorgusundan belirli bir şarkıyı, albümü veya türü çalabilirsiniz. Uygulamalar, Kullanıcının istediği içerik türünü belirleyemediğinde bu arama modunda dinlemenizi sağlar. Mümkün olduğunda daha spesifik arama modları kullanın.
Ekstra özellikler:
QUERY
(gerekli): Herhangi bir kombinasyonu içeren dize sanatçı, albüm, şarkı adı veya tür.
-
Belirli bir türde müziği çalma.
Ekstra özellikler:
"android.intent.extra.genre"
(zorunlu): Tür.QUERY
(zorunlu): tür. Bu ekstra her zaman sağlanır geriye dönük uyumluluk için de kullanılabilir. Arama modları hakkında bilgi sahibi olmayan mevcut uygulamalar, yapılandırılmamış bir arama olarak görebiliriz.
Sanatçı:
Audio.Artists.ENTRY_CONTENT_TYPE
-
Belirli bir sanatçının müziğini çal.
Ekstra özellikler:
EXTRA_MEDIA_ARTIST
(gerekli): sanatçı."android.intent.extra.genre"
: türe aitQUERY
(zorunlu): Sanatçı veya türün herhangi bir kombinasyonunu içeren bir dize. Bu ekstra özellik her zaman geriye dönük uyumluluk için sağlanır. Arama modları hakkında bilgi sahibi olmayan mevcut uygulamalar, bu niyeti yapılandırılmamış bir arayın.
-
Belirli bir albümden müzik çalın.
Ek ekstralar:
EXTRA_MEDIA_ALBUM
(zorunlu): albüm.EXTRA_MEDIA_ARTIST
: sanatçı."android.intent.extra.genre"
: türe aitQUERY
(gerekli): gerektiği gibidir. Bu ekstra özellik her zaman geriye dönük uyumluluk. Arama modlarından haberdar olmayan mevcut uygulamalar, bu amacı bir yapılandırılmamış arama.
Şarkı -
"vnd.android.cursor.item/audio"
-
Belirli bir şarkıyı çalmak.
Ekstra özellikler:
EXTRA_MEDIA_ALBUM
: albüm.EXTRA_MEDIA_ARTIST
: sanatçı."android.intent.extra.genre"
: tür.EXTRA_MEDIA_TITLE
(zorunlu): Şarkı adı.QUERY
(gerekli): albüm, sanatçı, tür veya başlık. Bu ekstra her zaman geriye dönük uyumluluk Arama modlarını bilmeyen mevcut uygulamalar bu amacı, yapılandırılmamış bir arama olarak işleyebilir.
Oynatma listesi:
Audio.Playlists.ENTRY_CONTENT_TYPE
-
Belirtilen bazı ölçütlerle eşleşen belirli bir oynatma listesini veya oynatma listesini oynatın ekstra özellikler içeriyor.
Ekstra özellikler:
EXTRA_MEDIA_ALBUM
: albüm.EXTRA_MEDIA_ARTIST
: Sanatçı."android.intent.extra.genre"
: tür."android.intent.extra.playlist"
: oynatma listesi.EXTRA_MEDIA_TITLE
: oynatma listesinin bulunduğu şarkının adı seçmeniz gerekir.QUERY
(zorunlu): Albüm, sanatçı, tür, şarkı listesi veya başlığın herhangi bir kombinasyonunu içeren bir dize. Bu ekstra, her zaman geriye dönük uyumluluk için sağlanır. Arama modları hakkında bilgi sahibi olmayan mevcut uygulamalar bu amacı yapılandırılmamış bir arama olarak işler.
Örnek amaç:
Kullanıcı belirli bir sanatçının müziğini dinlemek isterse, bir arama uygulaması şu amaç güdü:
Kotlin
fun playSearchArtist(artist: String) { val intent = Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH).apply { putExtra(MediaStore.EXTRA_MEDIA_FOCUS, MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE) putExtra(MediaStore.EXTRA_MEDIA_ARTIST, artist) putExtra(SearchManager.QUERY, artist) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void playSearchArtist(String artist) { Intent intent = new Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH); intent.putExtra(MediaStore.EXTRA_MEDIA_FOCUS, MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE); intent.putExtra(MediaStore.EXTRA_MEDIA_ARTIST, artist); intent.putExtra(SearchManager.QUERY, artist); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Etkinliğinizde bu niyeti ele alırken
Gelen derslerde EXTRA_MEDIA_FOCUS
ekstra
Arama modunu belirlemek için Intent
. Etkinliğiniz arama modunu belirledikten sonra, söz konusu arama modu için ek ekstraların değerlerini okuyun.
Daha sonra bu bilgiler sayesinde uygulamanız, envanterinde arama yaparak
Arama sorgusuyla eşleşen içerik. Bu, aşağıdaki örnekte gösterilmektedir.
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { ... if (intent.action.compareTo(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH) == 0) { val mediaFocus: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_FOCUS) val query: String? = intent.getStringExtra(SearchManager.QUERY) // Some of these extras might not be available depending on the search mode. val album: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ALBUM) val artist: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ARTIST) val genre: String? = intent.getStringExtra("android.intent.extra.genre") val playlist: String? = intent.getStringExtra("android.intent.extra.playlist") val title: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_TITLE) // Determine the search mode and use the corresponding extras. when { mediaFocus == null -> { // 'Unstructured' search mode (backward compatible) playUnstructuredSearch(query) } mediaFocus.compareTo("vnd.android.cursor.item/*") == 0 -> { if (query?.isNotEmpty() == true) { // 'Unstructured' search mode. playUnstructuredSearch(query) } else { // 'Any' search mode. playResumeLastPlaylist() } } mediaFocus.compareTo(MediaStore.Audio.Genres.ENTRY_CONTENT_TYPE) == 0 -> { // 'Genre' search mode. playGenre(genre) } mediaFocus.compareTo(MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE) == 0 -> { // 'Artist' search mode. playArtist(artist, genre) } mediaFocus.compareTo(MediaStore.Audio.Albums.ENTRY_CONTENT_TYPE) == 0 -> { // 'Album' search mode. playAlbum(album, artist) } mediaFocus.compareTo("vnd.android.cursor.item/audio") == 0 -> { // 'Song' search mode. playSong(album, artist, genre, title) } mediaFocus.compareTo(MediaStore.Audio.Playlists.ENTRY_CONTENT_TYPE) == 0 -> { // 'Playlist' search mode. playPlaylist(album, artist, genre, playlist, title) } } } }
Java
protected void onCreate(Bundle savedInstanceState) { //... Intent intent = this.getIntent(); if (intent.getAction().compareTo(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH) == 0) { String mediaFocus = intent.getStringExtra(MediaStore.EXTRA_MEDIA_FOCUS); String query = intent.getStringExtra(SearchManager.QUERY); // Some of these extras might not be available depending on the search mode. String album = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ALBUM); String artist = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ARTIST); String genre = intent.getStringExtra("android.intent.extra.genre"); String playlist = intent.getStringExtra("android.intent.extra.playlist"); String title = intent.getStringExtra(MediaStore.EXTRA_MEDIA_TITLE); // Determine the search mode and use the corresponding extras. if (mediaFocus == null) { // 'Unstructured' search mode (backward compatible). playUnstructuredSearch(query); } else if (mediaFocus.compareTo("vnd.android.cursor.item/*") == 0) { if (query.isEmpty()) { // 'Any' search mode. playResumeLastPlaylist(); } else { // 'Unstructured' search mode. playUnstructuredSearch(query); } } else if (mediaFocus.compareTo(MediaStore.Audio.Genres.ENTRY_CONTENT_TYPE) == 0) { // 'Genre' search mode. playGenre(genre); } else if (mediaFocus.compareTo(MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE) == 0) { // 'Artist' search mode. playArtist(artist, genre); } else if (mediaFocus.compareTo(MediaStore.Audio.Albums.ENTRY_CONTENT_TYPE) == 0) { // 'Album' search mode. playAlbum(album, artist); } else if (mediaFocus.compareTo("vnd.android.cursor.item/audio") == 0) { // 'Song' search mode. playSong(album, artist, genre, title); } else if (mediaFocus.compareTo(MediaStore.Audio.Playlists.ENTRY_CONTENT_TYPE) == 0) { // 'Playlist' search mode. playPlaylist(album, artist, genre, playlist, title); } } }
Yeni not
Not oluşturma, not alma uygulamalarında sık kullanılan bir işlemdir. Aşağıdaki bölümdeki bilgileri kullanarak uygulamanızın bu işlemi gerçekleştirme özelliğinin reklamını yapmak için bir intent filtresi oluşturun.
Not oluşturma
Yeni bir not oluşturmak için
ACTION_CREATE_NOTE
işlemini kullanın ve aşağıdaki ekstra özellikleri kullanarak konu ve metin gibi not ayrıntılarını belirtin.
Not: Uygulamalar kullanıcıdan onay istemelidir yapmanız gerektiğini unutmayın.
- İşlem
-
ACTION_CREATE_NOTE
- Veri URI Şeması
- Yok
- MIME Türü
-
PLAIN_TEXT_TYPE
- "*/*"
- Ekstralar
-
-
EXTRA_NAME
- Notun başlığını veya konusunu belirten bir dize.
-
EXTRA_TEXT
- Notun metnini gösteren bir dize.
-
- İşlem
-
ACTION_DIAL
: Numara çeviriciyi veya telefon uygulamasını açar.ACTION_CALL
: Telefon araması yapar (CALL_PHONE
izni gerekir)
- Veri URI Şeması
-
tel:<phone-number>
voicemail:<phone-number>
- MIME Türü
- Yok
tel:2125551212
tel:(212) 555 1212
- İşlem
-
"com.google.android.gms.actions.SEARCH_ACTION"
- Google Sesli İşlemler'den gelen arama sorgularını destekleyin.
- Ekstralar
-
QUERY
- Arama sorgusunu içeren bir dize.
- İşlem
ACTION_WEB_SEARCH
- Veri URI Şeması
- Yok
- MIME Türü
- Yok
- Ekstralar
-
SearchManager.QUERY
- Arama dizesi.
- İşlem
-
ACTION_SETTINGS
ACTION_WIRELESS_SETTINGS
ACTION_AIRPLANE_MODE_SETTINGS
ACTION_WIFI_SETTINGS
ACTION_APN_SETTINGS
ACTION_BLUETOOTH_SETTINGS
ACTION_DATE_SETTINGS
ACTION_LOCALE_SETTINGS
ACTION_INPUT_METHOD_SETTINGS
ACTION_DISPLAY_SETTINGS
ACTION_SECURITY_SETTINGS
ACTION_LOCATION_SOURCE_SETTINGS
ACTION_INTERNAL_STORAGE_SETTINGS
ACTION_MEMORY_CARD_SETTINGS
Kullanılabilen ek ayar ekranları için
Settings
dokümanlarına bakın . - Veri URI Şeması
- Yok
- MIME Türü
- Yok
- İşlem
ACTION_SENDTO
veya
ACTION_SEND
veya
ACTION_SEND_MULTIPLE
- Veri URI Şeması
-
sms:<phone_number>
smsto:<phone_number>
mms:<phone_number>
mmsto:<phone_number>
Bu şemaların tümü aynı şekilde yönetilir.
- MIME Türü
-
"text/plain"
"image/*"
"video/*"
- Ekstralar
-
"subject"
- İleti konusuyla ilgili bir dize (genellikle yalnızca MMS için).
"sms_body"
- Kısa mesaj için bir dize.
EXTRA_STREAM
- Şu öğeyi gösteren bir
Uri
: resim veya video ekleyin.ACTION_SEND_MULTIPLE
işlemini kullanıyorsanız bu ekstra birArrayList
Eklenecek resimlere veya videolara işaret edenUri
nesne.
- İşlem
ACTION_VIEW
- Veri URI Şeması
http:<URL>
https:<URL>
- MIME Türü
-
"text/plain"
"text/html"
"application/xhtml+xml"
"application/vnd.wap.xhtml+xml"
- Android cihazı geliştirme için ayarlama veya sanal bir cihaz kullanın.
- Uygulamanızın desteklemek istediğiniz amaçları işleyen bir sürümünü yükleyin.
adb
kullanarak bir intent tetikleyin:adb shell am start -a <ACTION> -t <MIME_TYPE> -d <DATA> \ -e <EXTRA_NAME> <EXTRA_VALUE> -n <ACTIVITY>
Örnek:
adb shell am start -a android.intent.action.DIAL \ -d tel:555-5555 -n org.example.MyApp/.MyActivity
- Gerekli intent filtrelerini tanımlarsanız niyeti işleyin.
Örnek amaç:
Kotlin
fun createNote(subject: String, text: String) { val intent = Intent(NoteIntents.ACTION_CREATE_NOTE).apply { putExtra(NoteIntents.EXTRA_NAME, subject) putExtra(NoteIntents.EXTRA_TEXT, text) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void createNote(String subject, String text) { Intent intent = new Intent(NoteIntents.ACTION_CREATE_NOTE) .putExtra(NoteIntents.EXTRA_NAME, subject) .putExtra(NoteIntents.EXTRA_TEXT, text); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="com.google.android.gms.actions.CREATE_NOTE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="*/*" /> </intent-filter> </activity>
Telefon
Telefon uygulamaları için arama başlatma işlemi yaygın bir işlemdir. Aşağıdaki bölümdeki bilgileri kullanarak uygulamanızın bu işlemi gerçekleştirme özelliğinin reklamını yapmak için bir intent filtresi oluşturun.
Telefon araması başlatma
Telefon uygulamasını açıp bir telefon numarası çevirmek için ACTION_DIAL
işlemini kullanın ve şunu kullanarak bir telefon numarası belirtin:
aşağıdaki URI şemasını seçin. Telefon uygulaması açıldığında telefon numarası gösterilir ve kullanıcının telefon görüşmesini başlatmak için Ara düğmesine dokunması gerekir.
Doğrudan telefon araması yapmak için ACTION_CALL
işlemini kullanın
ve aşağıdaki URI şemasını kullanarak bir telefon numarası belirtin. Telefon uygulaması açıldığında
telefon çağrısını başlatır. Kullanıcının Ara düğmesine dokunması gerekmez.
ACTION_CALL
işlemi,
Manifest dosyanız için CALL_PHONE
izni:
<uses-permission android:name="android.permission.CALL_PHONE" />
Geçerli telefon numaraları, IETF RFC 3966'da tanımlanan numaralardır. Geçerli örnekler arasında şunlar yer alır:
Telefon uygulamasının numara çeviricisi, şemaları normalleştirmede başarılıdır. Örneğin:
telefon numaraları. Bu nedenle, açıklanan şema Uri.parse()
yönteminde kesinlikle gerekli değildir.
Bununla birlikte, bir şemayı denemediyseniz veya
işlenebiliyorsa, Uri.fromParts()
yöntemini kullanın.
Örnek intent:
Kotlin
fun dialPhoneNumber(phoneNumber: String) { val intent = Intent(Intent.ACTION_DIAL).apply { data = Uri.parse("tel:$phoneNumber") } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void dialPhoneNumber(String phoneNumber) { Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:" + phoneNumber)); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Arama
İhtiyacınız olan bilgiler de dahil olmak üzere, arama uygulamaları için genel işlemler şunlardır: kullanarak uygulamanızın her bir işlemi yapma becerisini tanıtan bir intent filtresi oluşturun.
Belirli bir uygulamayı kullanarak arama yapma
Uygulamanızın bağlamında aramayı desteklemek için aşağıdaki intent filtresi örneğinde gösterildiği gibi uygulamanızda SEARCH_ACTION
işlemini içeren bir intent filtresi tanımlayın.
Not: Uygulama araması için SEARCH_ACTION
kullanmanızı önermeyiz.
Bunun yerine
GET_THING
Google Asistan'ın yerleşik uygulama içi desteğinden faydalanmak için harekete geçin. Daha fazla bilgi için bkz.
Google Asistan
Uygulama İşlemleri dokümanları.
Örnek intent filtresi:
<activity android:name=".SearchActivity"> <intent-filter> <action android:name="com.google.android.gms.actions.SEARCH_ACTION"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
Web'de arama yapma
Web araması başlatmak için ACTION_WEB_SEARCH
işlemini kullanın
ve arama dizesini
SearchManager.QUERY
ekstra.
Örnek amaç:
Kotlin
fun searchWeb(query: String) { val intent = Intent(Intent.ACTION_WEB_SEARCH).apply { putExtra(SearchManager.QUERY, query) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void searchWeb(String query) { Intent intent = new Intent(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY, query); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Ayarlar
Uygulamanız kullanıcının bir şeyi değiştirmesini gerektirdiğinde sistem Ayarlar uygulamasında bir ekran açmak için aşağıdaki intent işlemlerinden birini kullanın:
Örnek amaç:
Kotlin
fun openWifiSettings() { val intent = Intent(Settings.ACTION_WIFI_SETTINGS) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void openWifiSettings() { Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Kısa mesaj kullanımı
Ek içeren bir SMS/MMS mesajı oluşturma, kısa mesajlaşma uygulamaları için yaygın bir işlemdir. Uygulamanızın bu işlemi yapma becerisini tanıtmak için bilgilere daha ayrıntılı şekilde ulaşabilirsiniz.
Ek içeren SMS/MMS mesajı oluşturma
SMS veya MMS kısa mesajı başlatmak için aşağıdaki intent işlemlerinden birini kullanın ve aşağıdaki ek tuşları kullanarak telefon numarası, konu ve mesaj metni gibi mesaj ayrıntılarını belirtin.
Örnek amaç:
Kotlin
fun composeMmsMessage(message: String, attachment: Uri) { val intent = Intent(Intent.ACTION_SENDTO).apply { type = HTTP.PLAIN_TEXT_TYPE putExtra("sms_body", message) putExtra(Intent.EXTRA_STREAM, attachment) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void composeMmsMessage(String message, Uri attachment) { Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setType(HTTP.PLAIN_TEXT_TYPE); intent.putExtra("sms_body", message); intent.putExtra(Intent.EXTRA_STREAM, attachment); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Amacınızın başka bir kısa mesaj uygulaması tarafından değil, yalnızca bir kısa mesaj uygulaması tarafından işlendiğinden emin olmak
e-posta veya sosyal medya uygulamaları ile paylaşım yapın, ardından ACTION_SENDTO
işlemini kullanın
ve aşağıdaki örnekte gösterildiği gibi "smsto:"
veri şemasını dahil edin:
Kotlin
fun composeMmsMessage(message: String, attachment: Uri) { val intent = Intent(Intent.ACTION_SEND).apply { data = Uri.parse("smsto:") // Only SMS apps respond to this. putExtra("sms_body", message) putExtra(Intent.EXTRA_STREAM, attachment) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void composeMmsMessage(String message, Uri attachment) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setData(Uri.parse("smsto:")); // Only SMS apps respond to this. intent.putExtra("sms_body", message); intent.putExtra(Intent.EXTRA_STREAM, attachment); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.intent.action.SEND" /> <data android:type="text/plain" /> <data android:type="image/*" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Not: SMS/MMS mesajlaşma uygulaması geliştiriyorsanız
birkaç ek işlemde intent filtreleri uygulayarak
Android 4.4 ve sonraki sürümlerde varsayılan SMS uygulaması. Daha fazla bilgi için belgelere göz atın
Yer: Telephony
.
Web tarayıcısı
Web URL'si yüklemek, web tarayıcısı uygulamalarının sıkça kullandığı bir işlemdir. Uygulamanızın bu işlemi yapma becerisini tanıtmak için bilgilere daha ayrıntılı şekilde ulaşabilirsiniz.
Web URL'si yükleme
Bir web sayfasını açmak için ACTION_VIEW
işlemini kullanın
ve intent verilerinde web URL'sini belirtin.
Örnek amaç:
Kotlin
fun openWebPage(url: String) { val webpage: Uri = Uri.parse(url) val intent = Intent(Intent.ACTION_VIEW, webpage) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void openWebPage(String url) { Uri webpage = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, webpage); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
Örnek intent filtresi:
<activity ...> <intent-filter> <action android:name="android.intent.action.VIEW" /> <!-- Include the host attribute if you want your app to respond only to URLs with your app's domain. --> <data android:scheme="http" android:host="www.example.com" /> <category android:name="android.intent.category.DEFAULT" /> <!-- The BROWSABLE category is required to get links from web pages. --> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> </activity>
İpucu: Android uygulamanız web sitenize yönlendiren URL'ler için bir intent filtresi ekleyin. Ardından, Kullanıcılar uygulamanızı yüklemişlerse, e-postalardan veya web sitenize yönlendiren diğer web sayfalarından bağlantılar web sayfanız yerine Android uygulamanızı açın. Daha fazla bilgiyi şuradan edinebilirsiniz: Android App Links'i kullanma.
Android 12'den (API düzeyi 31) başlayarak genel bir web niyeti, Yalnızca uygulamanız belirli alan adı için onaylandıysa uygulamanızdaki etkinlik kontrol edilir. Uygulamanız alan adı için onaylanmazsa web intent, kullanıcının varsayılan tarayıcı uygulamasına çözümlenir.
Amaçları Android Debug Bridge ile doğrulayın
Uygulamanızın desteklemek istediğiniz amaçlara yanıt verdiğini doğrulamak için şunu kullanabilirsiniz:
adb
aracını kullanarak şunları yapabilirsiniz:
şu:
Daha fazla bilgi için Kabuk komutları verme bölümüne bakın.