Android之Intent深入
生活随笔
收集整理的這篇文章主要介紹了
Android之Intent深入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android中的意圖包含多種用法,本文主要包括以下內容
顯式意圖 :必須指定要激活的組件的完整包名和類名 (應用程序之間耦合在一起)
一般激活自己應用的組件的時候 采用顯示意圖
隱式意圖: 只需要指定要動作和數據就可以 ( 好處應用程序之間沒有耦合)
激活別人寫的應用 隱式意圖, 不需要關心對方的包名和類名
顯式意圖
//意圖 開電視 打人 打醬油Intent intent = new Intent(this, CalcActivity.class);intent.putExtra("name", name);//顯式意圖//intent.setClassName(getPackageName(), "com.itheima.rpcalc.CalcActivity");//不指定動作,也不指定數據 直接指定要激活的組件startActivity(intent);顯式意圖接收
public class CalcActivity extends Activity {private TextView tv_result;//當activity被創建的時候調用的方法@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_calc);tv_result = (TextView) findViewById(R.id.tv_result);Intent intent = getIntent();String name = intent.getStringExtra("name");byte[] result = name.getBytes();int number = 0;for(byte b :result){number += b&0xff;}int sorce = Math.abs(number)%100;tv_result.setText(name+"的人品:"+sorce);} }隱式意圖
隱式意圖只要設置action與data即可
要實現隱式意圖,首先要在Manifest文件中配置action,category,mimetype等
<activity android:name="com.itheima.intent2.SecondActivity" ><intent-filter><action android:name="com.itheima.intent2.open2" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="application/person" /><data android:scheme="jianren" /></intent-filter></activity>隱式意圖的實現
public void click(View view) {// 打 action// 人 數據// 附件的數據 Category 類別Intent intent = new Intent();intent.setAction("com.itheima.intent2.open2");intent.addCategory(Intent.CATEGORY_DEFAULT);// URL:統一資源定位符 http https ftp rtsp: URI:統一資源標識符 url是uri的一個子集// intent.setData(Uri.parse("jianren:張三")); setData與setType是對立的,不能同時使用,同時使用時要用setDataAndType// intent.setType("application/person");intent.setDataAndType(Uri.parse("jianren:張三"), "application/person");startActivity(intent);}使用隱式意圖打開瀏覽器的一個例子
瀏覽器的屬性配置如下
<intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.BROWSABLE" /><category android:name="android.intent.category.DEFAULT" /><data android:scheme="http" /><data android:scheme="https" /><data android:scheme="inline" /><data android:mimeType="text/html"/><data android:mimeType="text/plain"/><data android:mimeType="application/xhtml+xml"/><data android:mimeType="application/vnd.wap.xhtml+xml"/></intent-filter>利用隱式意圖實現
public void click(View view){ // <action android:name="android.intent.action.VIEW" /> // <category android:name="android.intent.category.DEFAULT" /> // <category android:name="android.intent.category.BROWSABLE" /> // <data android:scheme="http" /> // <data android:scheme="https" /> // <data android:scheme="about" /> // <data android:scheme="javascript" />Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addCategory("android.intent.category.BROWSABLE");intent.setData(Uri.parse("http://www.baidu.com"));startActivity(intent);}得到返回值的Intent實現,短信助手實例
public class MainActivity extends Activity {private EditText et_content;private EditText et_number;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et_content = (EditText) findViewById(R.id.et_content);et_number = (EditText) findViewById(R.id.et_number);}public void selectSms(View view) {Intent intent = new Intent(this, ListSmsActivity.class);// 開啟一個新的界面,并且獲取界面的返回值// startActivity(intent);// int requestCode 請求碼startActivityForResult(intent, 0);}public void selectNumber(View view) {Intent intent = new Intent(this, ListNumberActivity.class);// 開啟一個新的界面,并且獲取界面的返回值// startActivity(intent);// int requestCode 請求碼startActivityForResult(intent, 1);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (data != null) {String smsinfo = data.getStringExtra("smsinfo");if (resultCode == 0) {et_content.setText(smsinfo);} else if (resultCode == 1) {et_number.setText(smsinfo);}}super.onActivityResult(requestCode, resultCode, data);}public void sendSms(View view){String content = et_content.getText().toString().trim();String number = et_number.getText().toString().trim();SmsManager.getDefault().sendTextMessage(number, null, content, null, null);Toast.makeText(this, "發送成功", 0).show();} }編輯短信
public class ListSmsActivity extends Activity {private ListView lv;private String[] objects = {"玫瑰香香,情人黏黏,情話甜甜,情歌綿綿;花燈燦燦,禮花點點,好運連連,好夢圓圓。情人節喜逢元宵節,喜鵲登枝蝴蝶成雙鴛鴦成對雙喜臨門祝雙節快樂,合家團團圓圓,甜甜蜜蜜,開開心心,幸幸福福","情人節快到了,我精心挑選玫瑰花、百合花和滿天星,扎成一束鮮花隨短信送給你,火紅的玫瑰代表熱烈奔放,潔白的百合代表百年好合,小小的滿天星代表幸福美好。愿你的情人節熱烈奔放,你們的愛情百年好合,你們的生活幸福美滿。預祝情人節快樂","^o^滿天星光,最愛你許過愿望的那一顆,鮮花綻放,最愛你摘下微笑的那一朵,曼妙旋律,最愛你感動落淚的那一段,親愛的,情人節快樂,愛你。 ","^o^寶貝,情人節到了,送你一束玫瑰,用真心塑料紙包扎,系上快樂彩帶,噴點愛的香水,插一張真情卡片,寫著:寶貝,愿我的愛能帶給你一生的快樂!" };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sms);lv = (ListView) findViewById(R.id.lv);lv.setAdapter(new ArrayAdapter<String>(this, R.layout.sms_item,R.id.tv_info, objects));lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {String smsinfo = objects[position];Intent data = new Intent();data.putExtra("smsinfo", smsinfo);//設置數據。setResult(0, data);//關閉掉當前的activity,并且回傳數據 onActivityResult().finish();}});} }選擇聯系人
public class ListNumberActivity extends Activity {private ListView lv;private String[] objects = {"1234","34324","5643543","32424" };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sms);lv = (ListView) findViewById(R.id.lv);lv.setAdapter(new ArrayAdapter<String>(this, R.layout.sms_item,R.id.tv_info, objects));lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {String smsinfo = objects[position];Intent data = new Intent();data.putExtra("smsinfo", smsinfo);//設置數據。setResult(1, data);//關閉掉當前的activity,并且回傳數據 onActivityResult().finish();}});} }完成
總結
以上是生活随笔為你收集整理的Android之Intent深入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XGBoost的安装与介绍
- 下一篇: 傅里叶变换频谱的可视化保存