Intent之运输大队长

最近看了一篇文章,把Android划分成为一个王国,主要为分为以下

  1. Activity : 美女,所有可以展示的UI全部由她来渲染与起舞;
  2. Service : 劳模,总是在后台默默的为我们服务,绝对一流的劳模;
  3. ContentProvider : 档案馆,这里可以提供数据的接口,来共享数据;
  4. BroadCastReceiver : 广播电台,忽然想起了小时候农村的高音大喇叭:村民们注意了,村民们注意了,下午来生产队开会了...
  5. Intent : 物流公司,信差
  6. SDK : 屠龙刀
  7. IDE : 倚天剑,正所谓:倚天屠龙在手,天下无敌!

双十一刚过,我们还是来说说这个强大的物流运输公司吧

  1. Intent作为信使,包含以下一组信息

    1. Component Name:组件名称
    2. Action:动作,行为
    3. Data:数据,URI
    4. Category:种类,类型
    5. Extras:附加数据
    6. Flags
  2. Activity-->Activity(Service)

    1. // 内部类
    2. classMyOnclickListenerimplementsView.OnClickListener{
    3. @Override
    4. publicvoid onClick(View view){
    5. switch(view.getId()){
    6. case R.id.btn_activity:
    7. Intent intent =newIntent();
    8. intent.setClass(MainActivity.this,OtherActivity.class);
    9. intent.putExtra("name","ZhangSan");
    10. Bundle bundle =newBundle();
    11. bundle.putInt("age",12);
    12. bundle.putString("address","北京朝阳双龙南里18-1701");
    13. intent.putExtra("bundle", bundle);
    14. startActivity(intent);
    15. break;
    16. }
    17. }
    18. }

    接收方

    1. Intent intent = getIntent();
    2. Bundle bundle = intent.getBundleExtra("bundle");
    3. tv_show.setText("name:"+ intent.getStringExtra("name")+"\n"+
    4. "age:"+ bundle.get("age")+"\n"+"address:"+ bundle.get
    5. ("address"));

  3. 带结果的返回
    1. startActivityForResult

      1. privatestaticfinalint REQUEST_CODE =1001;
      2. ......
      3. Intent intentResult =newIntent(OtherActivity.this,ResultActivity.class);
      4. startActivityForResult(intentResult, REQUEST_CODE);

    2. 复写onActivityResult方法

      1. @Override
      2. protectedvoid onActivityResult(int requestCode,int resultCode,Intent
      3. data){
      4. super.onActivityResult(requestCode, resultCode, data);
      5. if(requestCode == REQUEST_CODE){
      6. if(resultCode == RESULT_OK){
      7. tv_result.setText(data.getStringExtra("result"));
      8. }
      9. }

    3. 在另一Activity设置返回结果,必须在finish前

      1. Intent intent = getIntent();
      2. intent.putExtra("result","我是Activity的结果");
      3. setResult(RESULT_OK,intent); // RESULT_OK 是Activity的常量
      4. finish();

  4. 调用系统的方式(发短信)

    1. findViewById(R.id.btn_sendSMS).setOnClickListener(newView
    2. .OnClickListener(){
    3. @Override
    4. publicvoid onClick(View view){
    5. Intent intent =newIntent();
    6. intent.setData(Uri.parse("smsto:10086"));
    7. intent.setAction(Intent.ACTION_SENDTO);
    8. intent.putExtra("sms_body","10086,你好,我是测试发送的短信");
    9. startActivity(intent);
    10. }
    11. });

  5. 调用系统的方式(打开通讯录,选择电话号码后返回)
    1. Intent intent =newIntent(Intent.ACTION_PICK,
    2. ContactsContract.Contacts.CONTENT_URI);
    3. startActivityForResult(intent, PICK_CONTACT_REQUEST);

    在onActivityResult中获取

    1. if(requestCode == PICK_CONTACT_REQUEST){
    2. Cursor cursor =null;
    3. if(resultCode == RESULT_OK){
    4. Uri uri = data.getData();
    5. ContentResolver resolver = getContentResolver();
    6. if(uri !=null){
    7. cursor = resolver.query(uri,newString[]{ContactsContract.Contacts.DISPLAY_NAME},null,null,
    8. null);
    9. }
    10. String name =null;
    11. if(cursor.moveToFirst()){// True if the cursor is not empty
    12. int columnIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
    13. name = cursor.getString(columnIndex);
    14. et_contacts.setText(name);
    15. }
    16. }
    17. }

来自为知笔记(Wiz)

时间: 2024-11-08 22:24:08

Intent之运输大队长的相关文章

android 基础知识

2005年google收购成立22个月的android公司: 2007年谷歌为首的34家公司宣布成立开放手机联盟: android建国纲领: 1.随时随地为每个人提供信息: 2.永不作恶 android的四大天王: 1.Activity:整个应用程序的界面.主要负责应用程序中的数据展示.也就是构建应用程序的界面. 2.Intent:运输大队长.应用程序中所有数据都是通过它来传递,主要是整个应用程序界面和界面之间床传递数据. 3.Service:Android里面的劳模,虽然看不到它,但是它承担着

[luogu P1967][NOIp2013]P1967 货车运输

题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物. 输入输出格式 输入格式: 输入文件名为 truck.in. 输入文件第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座城市和 m 条道 路. 接下来 m 行每行 3 个整数 x. y. z,每两个整数之间用一个空格隔开,表示从 x 号城市到 y 号城市有一条限重为 z

intent.getExtras()和intent.getStringExtra()

intent.getExtras()返回一个Bundle对象. 看下面代码: Intent intent=new Intent(this,SecondActivity.class); Bundle bundle=new Bundle(); bundle.putString("test", "123"); intent.putExtras(bundle); startActivity(intent); String params=this.getIntent().ge

Intent传参数

Intent 是Android 程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组 件想要执行的动作,还可以在不同组件之间传递数据.Intent 一般可被用于启动活动.启动 服务.以及发送广播等场景 // A activity调用 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.act

bzoj1003: [ZJOI2006]物流运输

dp+最短路.暴力枚举就可以了.O(n3logn).样例中m=n然后测样例过了.然后 54行习惯性的dis[n]然后就WA了!!!. #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> using namespace std; #define rep(i,s,t) for(int i=s;i<=t;i++) #de

Android之Intent

前言:大家都知道Android程序的实现一般都由四大组件构成: Activity :Android程序实现功能的主体,提供了和客户交互的界面,也提供了和后台交互的功能. Service :是一个没有界面的activity,主要用于后台运行的程序. Broadcast :是当前程序和系统之间通信的工具. ContentProvider :android程序,管理资源的一种工具. 上面这4个组件都需要在manifest里面注册才能够使用,manifest就相当于android程序的大管家.当然光有组

Pro Android学习笔记(十一):了解Intent(中)

Intent的构成 Intent可以带有action,data(由URI表达),extra data(key/value map,键值对),指定的类名(成为component name).一个intent至少携带上述的一个内容. Action.Action名,在上一笔记中已经给出两种例子,一种是系统自带的,如Intent.ACTION_DAIL,一种是开发者通过AndroidManifest.xml进行注册的,在创建intent时给出:Intent intent=new Intent(Strin

Android中Intent的深入理解

(1)Intent提供了一种通用的消息系统,它允许在你的应用程序见传递Intent来执行动作和产生事件,使用Intent可以激活Android应用的三种类型的核心组件:活动Activity.服务Service.广播接受者Broadcast. (2)Intent又分为隐士意图和显示意图. 显示意图:调用intent.setComponent().intent.setClassName()或者intent.setClass()方法明确的制定组件名的Intent为显示意图,显示意图明确的制定要激活哪一

Intent中的四个重要属性——Action、Data、Category、Extras

Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递.通过其自带的属性,其实可以方便的完成很多较为复杂的操作.例如直接调用拨号功能.直接自动调用合适的程序打开不同类型的文件等等.诸如此类,都可以通过设置Intent属性来完成. Intent主要有以下四个重要属性,它们分别为: Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作.通过setAction()方法或在清单文件AndroidManifest.xml中设置.默认为:DE