你的位置:首页 > 操作系统

[操作系统]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)