Intent bir objedir. İçinde komponentler arasında taşınmak üzere bir mesaj bulundurur.
intentler activity, service ve broadcast receiver lar arasında mesaj iletimi sağlar.
Bir aktiviteyi ya da servisi başlatmayı, bir broadcast iletimi yapmayı intent ile sağlarız.
Intentler app içinde ya da dışında işlem başlatabilirler.
App içinde activityler arasında giden intentlere "explicit"; başka app leri çalıştıran intentlere "implicit" denir.
startActivity(myIntent) komutuyla başlatılırlar.
1. Explicit intentler:
- Başka bir activity başlatmak için :
Intent i = new Intent(this, AnActivity.class);
i.setData(Uri.parse(fileUrl)); //isteğe bağlı
startActivity(i);
2. Implicit intentler:
putExtra() metoduyla ilave data verebiliyoruz.
setType() ile MIME type belirtmek gerekir. Aksi halde istediğimizden başka app lar da trigger olur.
Örneğin ACTION_VIEW intenti ile resim görüntülemek istiyorsak "image/*" diyerek spesifik davrandığımızdan, başka data tiplerini görüntüleyebilen appleri trigger etmez.
Eğer yolladığımız intenti handle edebilecek bir app yoksa app crash edecektir.
Bu yüzden queryIntentActivities() metodundan dönen liste boş değilse, intenti kullanabiliriz demektir.
Şöyle ki:
PackageManager packageManager = getPackageManager();
List activities = packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
boolean isIntentSafe = activities.size() > 0;
Örneğin harita görüntülemeden önce haritayı gösterebilen bir app olduğunu kontrol eden ve sonra başlatan bir kod:
// Build the intent
Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);
// Verify it resolves
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
boolean isIntentSafe = activities.size() > 0;
// Start an activity if it's safe
if (isIntentSafe) {
startActivity(mapIntent);
}
Eğer intenti birden fazla app handle edebiliyorsa bir app chooser ile kullanıcıya her defasında seçtirebiliriz.
Şöyle ki:
Intent intent = new Intent(Intent.ACTION_SEND);
...
// Always use string resources for UI text.
// This says something like "Share this photo with"
String title = getResources().getString(R.string.chooser_title);
// Create intent to show chooser
Intent chooser = Intent.createChooser(intent, title);
// Verify the intent will resolve to at least one activity
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(chooser);
}
- Web sayfası görüntülemek için :
Uri webpage = Uri.parse("http://www.android.com");
Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
startActivity(webIntent);
- Verilen numarayı aramak için :
Uri number = Uri.parse("tel:5551234");
Intent callIntent = new Intent(Intent.ACTION_DIAL, number);
startActivity(callIntent);
- Harita görüntülemek için :
// Map point based on address
Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
// Or map point based on latitude/longitude
// Uri location = Uri.parse("geo:37.422219,-122.08364?z=14"); // z param is zoom level
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);
startActivity(mapIntent);
- E-mail göndermek için:
Intent emailIntent = new Intent(Intent.ACTION_SEND);
// The intent does not have a URI, so declare the "text/plain" MIME type
emailIntent.setType(HTTP.PLAIN_TEXT_TYPE);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"jon@example.com"}); // recipients
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message text");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://path/to/email/attachment"));
// You can also attach multiple items by passing an ArrayList of Uris
- Calendar event başlatmak için:
Intent calendarIntent = new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI);
Calendar beginTime = Calendar.getInstance().set(2012, 0, 19, 7, 30);
Calendar endTime = Calendar.getInstance().set(2012, 0, 19, 10, 30);
calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());
calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());
calendarIntent.putExtra(Events.TITLE, "Ninja class");
calendarIntent.putExtra(Events.EVENT_LOCATION, "Secret dojo");
Etiketler
abstraction
Accord Framework
ajax
android
architecture
Array
assets
async task
AsyncTask
authorization
avd
billy joel
button
Classification
collections
component
concurrency
container
data science
database
Decision Tree
Decision Trees
dhcp
distributed
donma
emülatör
encapsulation
exception
express
Feature extraction
Feature Selection
garbage collection
glassfish
google
grafik
güvenlik
hadoop
http
IDE
inheritance
j2ee
jade
java
java.lang
JDBC
jls
JNDI
JSF
jsp
kitap
lib
link
Machine Learning
Marmara Üniversitesi
material design
maven
mongodb
multiple inheritance
nested class
netbeans
network
node.js
NoSQL
oop
Oracle
ORM
pass-by-value
pattern
permission
polymorphism
PrimeFaces
primitive
Project Euler
protocol
R
response
REST
RMI
root
Scala
servlet
Set
sözlük
spring
sqlite
tasarım desenleri
tcp/ip
template
test
thread
tier
toast
tomcat
türk telekom
twitter
UI thread
virtual device
web application
web design
web service
WEKA
wireshark
Hiç yorum yok:
Yorum Gönder