Penggunaan asas Niat


Pengenalan kepada bahagian ini:

Selepas penghujung bahagian sebelumnya, ini bermakna kita telah selesai mempelajari empat komponen utama Android~, dan perkara yang ingin kita pelajari dalam bahagian ini ialah hubungan antara empat komponen utama Hub - Intent (Intent), jambatan komunikasi Android, sebagai contoh, kita boleh lulus:

  • startActivity(Intent)/startActivityForResult (Niat ): untuk memulakan Aktiviti
  • startService(Intent)/bindService(Intent): untuk memulakan Perkhidmatan
  • sendBroadcast : Hantar siaran kepada Penerima Siaran yang ditentukan
  • Juga jangan lupa bahawa kami telah menulis banyak Penapis Niat semasa mendaftarkan empat komponen utama~

Baiklah, tanpa berlengah lagi, mari mulakan bahagian ini! Selain itu, kami telah pun menggunakan Niat sebelum ini, jadi kami tidak akan bercakap tentang perkara konsep~ Peraturan lama, API rasmi: Niat


1 Perbezaan antara Niat tersurat dan Niat tersirat

  • Niat Eksplisit<. 🎜>: Tentukan komponen sasaran untuk dimulakan melalui nama komponen, seperti startActivity(new Intent(A.this,B.class)); Terdapat hanya satu komponen dimulakan setiap kali~
  • Niat eksplisit tersirat: Jangan nyatakan nama komponen, tetapi nyatakan Tindakan, Data atau Kategori Niat Apabila kita memulakan komponen , Ia akan memadankan penapis Niat komponen yang berkaitan dalam AndroidManifest.xml dan memadankan komponen yang memenuhi atribut satu demi satu Apabila lebih daripada satu memenuhi keperluan, Kotak dialog akan muncul untuk kita pilih yang mana satu untuk dimulakan~

2. Tujuh atribut Niat:


1) Nama Komponen (komponen. nama )

1.png


2) Tindakan

2.png


3) Kategori

3.png


4) Data (data), Jenis (jenis MIME)

4.png


5) Tambahan (Tambahan)

5.png


6) Bendera (tanda)

6.png


3

Ini banyak digunakan, jadi mari terus ke contoh:

Contoh 1:

Klik butang untuk kembali ke antara muka Laman Utama: Menjalankan rendering:

7.gif

Kod teras:

Intent it = new Intent();
it.setAction(Intent.ACTION_MAIN);
it.addCategory(Intent.CATEGORY_HOME);
startActivity(it);

Contoh 2: Klik butang untuk membuka halaman Baidu: Rendering berjalan:

8.gif

Kod teras:

Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
it.setData(Uri. parse("http://www.baidu.com"));
startActivity(it);

4 Penjelasan terperinci tentang Niat tersirat

9.png


1) Contoh Niat Tersirat bagi tindakan yang dipratentukan:

Contoh kod: Selepas mengklik butang, semua Aktiviti yang Tindakannya VIEW ditapis dan dipaparkan oleh pengguna Pilihan lanjut:

Kod teras:

Cipta susun atur Aktiviti kedua, dan Aktiviti yang sepadan, tambah kod dalam acara klik butang Aktiviti pertama :

Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
startActivity(it);

Akhir sekali dalam Tambah kod berikut pada Niat dua aktiviti:

<activity android:name=".SecondActivity"
android:label="Second Activity">
& lt;


Kod teras:
Buat reka letak Aktiviti kedua dan Aktiviti yang sepadan, tambah kod dalam acara klik butang Aktiviti pertama:

Intent it = new Intent();it.setAction("my_action");it.addCategory("my_category");

startActivity(it);

Akhir sekali tambahkan kod berikut pada Aktiviti kedua:

& LT; Aktiviti android: name = ". SecondActivity"
Android: label = "Aktiviti Kedua" & GT ;
                                                                                                                                                                                                                                                     name="android.intent.category.DEFAULT"/>                                                                                                                                                                  Tetapi anda masih perlu menambah lalai ini, jika tidak, ralat akan dilaporkan:

android "android.intent.category.DEFAULT"/>


5. Koleksi Niat sistem yang biasa digunakan

Sila siarkan koleksi Niat sistem yang biasa digunakan Jika ada yang tidak disenaraikan di atas, sila cadangkan~

//========================================== =====================
//1 Buat panggilan
// Buat panggilan ke perkhidmatan pelanggan mudah alih 10086
Uri. uri = Uri.parse ("tel:10086");
Niat niat = Niat baharu(Intent.ACTION_DIAL, uri);
startActivity(intent);

//===== ================================================== ===== ===

//2 Hantar mesej teks
// Hantar mesej teks dengan kandungan "Hello" ke 10086
Uri uri = Uri.parse(" smsto:10086");
Niat niat = Niat baharu(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "Hello");
startActivity(intent);

//3. Hantar MMS ( Setara dengan menghantar mesej teks dengan lampiran)
Niat niat = Niat baharu(Intent.ACTION_SEND);
intent.putExtra("sms_body", "Hello");
Uri uri = Uri.parse("content ://media/external/images/media/23");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType("image/png ");
startActivity(niat) ;

//============================== =========================== =====================

//4 🎜>//Buka laman utama Baidu
Uri uri = Uri.parse("http://www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity (niat);

//= ================================================== ============= ============

//5 Hantar e-mel: (Tidak berguna untuk meniadakan perkhidmatan Google!!!)
// Hantar kepada seseorang@domain.com Mel
Uri uri = Uri.parse("mailto:someone@domain.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(intent);
/ / Hantar e-mel kepada someone@domain.com Hantar e-mel dengan kandungan "Hello"
Niat niat = Niat baharu(Intent.ACTION_SEND);
niat. putExtra(Intent.EXTRA_EMAIL, "someone@domain.com") ;
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "Hello");
intent.setType("text/plain");
startActivity(intent);
//Hantar e-mel kepada berbilang orang
Intent intent=new Intent(Intent.ACTION_SEND);
String[] tos = {"1@abc.com", "2@abc.com"}; // Recipient
String[] ccs = {"3@abc.com", "4@abc.com"}; Sk
String[] bccs = {" 5@abc.com", "6@abc.com"}; // Bcc
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra (Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_BCC, bccs);
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, " Hello");
intent.setType("message/rfc822");
startActivity(intent);

//======================== = =======================================================

//6 . Paparkan peta:
//Buka Peta Google Beijing, lokasi China (39.9 latitud utara, 116.3 bujur timur)
Uri uri = Uri.parse("geo:39.9,116.3");
Niat niat = Niat baharu(Intent .ACTION_VIEW, uri);
startActivity(niat);

//========================= =================== ====================

//7 perancangan
// Perancangan laluan: dari suatu tempat di Beijing (39.9 lintang utara, 116.3 bujur timur) ke suatu tempat di Shanghai (31.2 lintang utara, 121.4 bujur timur)
Uri uri = Uri.parse("http:/ /maps.google.com/maps? f=d&saddr=39.9 116.3&daddr=31.2 121.4");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

//=========================================== ========= ========

//8 main balik multimedia:
Niat niat = Niat baharu(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:// /sdcard/foo.mp3");
intent.setDataAndType(uri, "audio/mp3");
startActivity(intent);

// Dapatkan semua fail audio dalam kad SD, kemudian Mainkan lagu pertama =-=
Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
Intent intent = new Intent (Intent.ACTION_VIEW, uri);
startActivity (niat);

//============================ ============================ =========================

//9 kamera untuk mengambil gambar:
// Buka program pengambilan foto
Niat niat = Niat baharu(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
//Dapatkan data foto
Bundle extras = intent.getExtras();
Bitmap bitmap = (Bitmap) extras.get("data");

//Satu lagi:
//Panggil aplikasi kamera sistem dan simpan foto yang diambil
Niat niat = Niat baharu(MediaStore.ACTION_IMAGE_CAPTURE );
masa = Calendar.getInstance().getTimeInMillis();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File() Persekitaran
.getExternalStorageDirectory().getAbsolutePath()+"/ tucue", masa + ".jpg")));
startActivityForResult(niat, ACTIVITY_GET_CAMERA_IMAGE);

//==== =================================================== =========

//10 Dapatkan dan potong imej
// Dapatkan dan potong imej
Niat niat = Niat baharu(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra("crop", "true"); // Hidupkan pemangkasan
intent.putExtra("aspectX", 1); nisbah pemangkasan ialah 1:2
intent.putExtra ("aspectY", 2);
intent.putExtra("outputX", 20); // Simpan lebar dan tinggi imej
intent.putExtra("outputY", 40); Fail baharu ("/mnt/sdcard/temp")); // Simpan laluan
intent.putExtra("outputFormat", "JPEG"); // Format pengembalian
startActivityForResult(intent, 0);
//Potong gambar tertentu
Niat niat = Niat baharu("com.android.camera.action.CROP");
intent.setClassName("com.android.camera", "com.android.camera . CropImage");
intent.setData(Uri.fromFile(new File("/mnt/sdcard/temp"));
intent.putExtra("outputX", 1); // Lebar tanaman nisbah ketinggian ialah 1:2
intent.putExtra("outputY", 2);
intent.putExtra("aspectX", 20); // Simpan lebar dan tinggi imej
intent.putExtra ("aspectY", 40);
intent.putExtra("scale", true);
intent.putExtra("noFaceDetection", true); (" file:///mnt/sdcard/temp"));
startActivityForResult(intent, 0);

//================ ==============================================

//11 Buka Google Market
// Buka Google Market dan terus masuk ke halaman terperinci program
Uri uri = Uri.parse("market://details?id=" + "com. .demo.app ");
Niat niat = Niat baharu(Intent.ACTION_VIEW, uri);
startActivity(intent);

//=========== =================== ================================= ==

//12 Masukkan antara muka tetapan telefon mudah alih:
// Masukkan antara muka tetapan rangkaian wayarles (yang lain boleh disalin daripada satu contoh)
Niat niat = Niat baharu(android. provider.Settings.ACTION_WIRELESS_SETTINGS);
startActivityForResult (niat, 0);

//========================== ========================= ==========================

//13 :
Uri installUri = Uri.fromParts( "pakej", "xxx", null);
returnIt = Niat baharu(Intent.ACTION_PACKAGE_ADDED, installUri);

//===== ================================================== ========

//14 Nyahpasang apk:
Uri uri = Uri.fromParts("package", strPackageName, null); .ACTION_DELETE, uri);
startActivity( it); =====================================

//15 :
Niat itu = Niat baharu(Intent.ACTION_SEND) ;     
it.putExtra(Intent.EXTRA_SUBJECT, "Teks subjek e-mel");
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/eoe.mp3"); /mp3"); 
startActivity(Intent.createChooser(it, "Choose Email Client"));

//================================ =============================================

//16. Masukkan halaman kenalan:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(People.CONTENT_URI);
startActivity( niat);

//======================================== === ========================


//17 Lihat orang hubungan yang ditetapkan:
Uri personUri = ContentUris. withAppendedId(People.CONTENT_URI, info.id);//info.id contact ID
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent. setData(personUri );
startActivity(niat);

//============================= === ==============================

//18 kenalan (SDK versi lebih tinggi sah):
Intent it = newIntent(Intent.ACTION_INSERT_OR_EDIT); Kenalan.CONTENT_ITEM_TYPE) ;
it.putExtra("name","myName");
it.putExtra(android.provider.Contacts.Intents.COMPANY, "organization"); putExtra(android. provider.Contacts.Intents.Insert.EMAIL,"email"); 
it.putExtra(android.provider.Contacts.Intents.Insert.PHONE,"homePhone"); 
it.putExtra( android.provider. Contacts.Intents.Insert.SECONDARY_PHONE,"Telefon mudah alih"); 
it.putExtra( android.provider.Contacts.Intents.Insert.TERTIARY_PHONE,"workPhone"); 
it.putExtra(android. provider.Contacts. Intents.Insert.JOB_TITLE,"title");
startActivity(it);

//===== =================== ===========================

//19. Panggil editor sistem untuk menambah kenalan (semuanya sah):
Niat niat = newIntent(Intent.ACTION_INSERT_OR_EDIT); Intents.Insert.NAME , "My Name");
intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890");intent.putExtra(Contacts.Intents.Insert.EMAIL, "com@com.com");    
intent.putExtra(Contacts.Intents.Insert.EMAIL_TYPE, Contacts.ContactMethodsColumns.TYPE_WORK);    
startActivity(niat);

//================================================ =============================

//20.打开另一程序 
Niat i = baru Niat();     
ComponentName cn = new ComponentName("com.example.jay.test",     
"com.example.jay.test.MainActivity");     
i.setComponent(cn);     
i.setAction("android.intent.action.MAIN");     
startActivityForResult(i, RESULT_OK);

//================================ ===============================

//21.打开录音机
Niat mi = baru Niat(Media.RECORD_SOUND_ACTION);     
startActivity(mi);

//================================================ =============================

//22.从google搜索内容 
Niat niat = baharu Niat();     
intent.setAction(Intent.ACTION_WEB_SEARCH);     
intent.putExtra(SearchManager.QUERY,"searchString")     
startActivity(intent);

//================================ ============================================

6.Action在哪里查?

本来想直接贴以前收集到的 Intent Action的,后来想想还义义,想还义以前收集到的 Niat如授之以渔, 如果你下载了Android的文档的话,可以在下述路径:

sdk-->docs-->rujukan-->android---->-.html

找到这个玩意,然后从这个Constants开始就是了:

11.png

陇田院即可~


本节小结:

好的,关于Intent的基本使用就到这里,下一节我们会来继佑用Intent可能会遇到 的一些问题或者说需求吧,敬请期待,谢谢~