Android之Intent深入

Android中的意图包含多种用法,本文主要包括以下内容

  1. 显式意图
  2. 隐匿意图
  3. 要求结果回传的意图

显式意图 :必须指定要激活的组件的完整包名和类名 (应用程序之间耦合在一起)
一般激活自己应用的组件的时候 采用显示意图

隐式意图: 只需要指定要动作和数据就可以 ( 好处应用程序之间没有耦合)
激活别人写的应用 隐式意图, 不需要关心对方的包名和类名

显式意图

//意图     开电视  打人  打酱油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();}});}
}

完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信通院AI白皮书:硬核干货一文打尽,从技术流派到应用趋势【附下载】

来源&#xff1a;智东西摘要&#xff1a;从产业发展的角度&#xff0c;分析AI技术现状、问题以及趋势&#xff0c;盘点智能语音、语义理解、计算机视觉等相关应用。自2016年AlphaGo击败李世石之后&#xff0c;人工智能&#xff08;AI&#xff09;这个再度翻红的科技热词已经在争…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 23丨向CEO汇报工作的人【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

正则学习笔记

用途 字符匹配 语法 常用元字符 []    区间范围框 枚举值  [a-z0-9A-Z_] |    分枝条件或 \    特殊转义符&#xff08;取消转义&#xff09; \W [^A-Za-z0-9_] [\r\n] 换行符匹配 [\u4e00-\u9fa5] 汉字 [\s\S] 任意字符 限定符 贪婪匹配&…

Android之UI控件

本文主要包括以下内容 Spinner的使用 Gallery的使用 Spinner的使用 Spinner的实现过程是 1. 在xml文件中定义Spinner的控件 2. 在activity中获取Spinner控件 3. 定义Spinner下拉列表项数组并将下拉项的内容添加到这个数组中&#xff0c;通过这个数组建立一个下拉列表的适…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 23丨学生们参加各科测试的次数【难度简单】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

大脑如何判断该睡觉了?可能是这80种蛋白说了算

来源&#xff1a;科研圈撰文&#xff1a;Veronique Greenwood翻译&#xff1a;石云雷编辑&#xff1a;戚译引睡眠对于正常的学习和身体健康至关重要&#xff0c;但科学家们仍未完全了解睡眠在恢复大脑功能方面的作用和我们会感到困倦的原因。而通过对基因突变小鼠不寻常睡眠需求…

ImageLoader实现图片异步加载

ImageLoader是一个广泛使用的图片库,在向网络请求图片时&#xff0c;使用imageView和smartView常会产生outofmemory错误&#xff0c;这时ImageLoader可以起到很大的作用&#xff0c;主要有如下功能 一、功能特性&#xff1a; 多线程异步加载和显示图片&#xff08;图片来源于…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 26丨广告效果【难度简单】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

AI芯片最新格局分析

来源&#xff1a;中金公司&#xff0c;作者黄乐平、何玫与杨俊杰AI 芯片设计是人工智能产业链的重要一环。 自 2017 年 5 月以来&#xff0c;各 AI 芯片厂商的新品竞相发布&#xff0c;经过一年多的发展&#xff0c;各环节分工逐渐明显。 AI 芯片的应用场景不再局限于云端&…

原理图学习笔记一

画个草图也挺过瘾 转载于:https://www.cnblogs.com/retacn-yue/archive/2013/02/17/3263137.html

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 27丨每次访问的交易次数【难度困难-提前放出来】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

Android Studio安装与配置

谷歌已经停止支持eclipse开发android了&#xff0c;转向android studio是大势所趋&#xff0c;笔者由于电脑配置的原因&#xff0c; 以前迟迟不愿意向android studio&#xff0c;现如今因为开始学习material design,不得不转向android studio了&#xff0c; 费了一番功夫&…

材料界的魔术师:值得关注的10家超材料创业公司

来源&#xff1a;资本实验室超材料是具有人工设计的结构并呈现出天然材料所不具备的超常物理性质的人工复合结构或复合材料。典型的超材料有&#xff1a;“左手材料”、光子晶体、“超磁性材料”等。通俗地说&#xff0c;通过超材料技术&#xff0c;我们将能够摆脱来自自然界原…

ChildWindow在Open时旋转出现

在App.xaml中&#xff1a; <VisualState x:Name"Open"><Storyboard><DoubleAnimationUsingKeyFrames Storyboard.TargetProperty"(UIElement.Projection).(PlaneProjection.RotationY)" Storyboard.TargetName"ContentRoot">&…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 24丨不同国家的天气类型【难度简单】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

Android之ScrollView

1、ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 2、上述两个控件只能有一个孩子&#xff0c;但是它并不是传统意义上的容器 3、上述两个控件可以互相嵌套 4、滚动条的位置现在的实验结果是&#xff1a;可以由layout_width和layout_height设定 5、ScrollV…

百余位中外学者探讨神经科技挑战:伦理担忧与监管难题并存

来源&#xff1a;澎湃新闻“脑电图图纸也许会读出人的意识”、“脑机接口技术可能使个人的行为被他人操纵”、“人造大脑的发明可能取代人类的角色”……这些形形色色的言论道出了人们对于神经科学的道德和伦理担忧。澎湃新闻专访了神经伦理学领域的研究人员&#xff0c;就神经…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 24丨找到连续区间的开始和结束数字【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

PHP CURL 使用代理访问服务器

使用CURL库访问代理服务器 function curl_string ($url,$user_agent,$proxy){$ch curl_init();curl_setopt ($ch, CURLOPT_PROXY, $proxy);curl_setopt ($ch, CURLOPT_URL, $url);curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);curl_setopt ($ch, CURLOPT_COOKIEJAR, &q…

Android之ActionBar

本文主要包括以下内容 ActionBar的显示及隐藏&#xff0c;添加图标&#xff0c;返回主页 ActionBar添加ActionView,添加ActionProvider ActionBar实现Tab ActionBar添加下拉列表 ActionBar介绍 在Android 3.0中除了我们重点讲解的Fragment外&#xff0c;Action Bar也是一个…