我的anroid学习之路-Intent

先回顾一下Intent:什么叫Intent,

    Intent是一个将要执行的动作的抽象的描述,由Intent来协助完成android各个组件之间的通讯。比如调用Activity实例化对象的startActivity()来启动一个activity,或者由Broadcast Intent()来传递给所有感兴趣的BroadcastReceiver, 或者由startService()/bindservice()来启动一个后台的service。可见,intent主要用来启动activity或者service(并携带需要传递的参数信息),intent理解成activity之间的粘合剂。

Intent的使用方式,有以下2种:

显示调用 1:
public class Userinfo{
 public int Userid;
 public string Username;
}

//创建一个显式的 Intent 对象(方法一:在构造函数中指定)

    Intent intent = new Intent(Intent_Demo.this, Intent_Demo1_Result.class);
  
     Bundle bundle = new Bundle();
     bundle.putString("id", strID);
    intent.putExtras(bundle);
  
    intent.putExtra("username", "test");
    intent.putExtra("userInfo", new UserInfo(1, "name"));
    startActivity(intent);


//创建一个显式的 Intent 对象(方法二:用 setClass 方法)
   Intent intent = new Intent();
   Bundle bundle = new Bundle();
   bundle.putString("id", strID);
   intent.setClass(Intent_Demo.this, Intent_Demo_Result.class);
   intent.putExtras(bundle);
   startActivity(intent);


隐式调用2:
  //创建一个隐式的 Intent 对象:Action 动作
  /**
    * 这里指定的是 AndroidManifest.xml 文件中配置的
 * <intent-filter>标签中的<action android:name="com.great.activity_intent.Intent_Demo.Result" />
 * 所在的 Activity,注意这里都要设置 <category android:name="android.intent.category.DEFAULT" />
 */
Intent intent = new Intent();
 //设置 Intent 的动作
 intent.setAction("com.great.activity_intent.Intent_Demo.Result");
Bundle bundle = new Bundle();
bundle.putString("id", strID);
intent.putExtras(bundle);
 startActivity(intent);



再看看如何调用系统的组件:

1.拨打电话 //要使用这个必须在配置文件中加入<uses-permission android:name="android.permission.CALL_PHONE"/>

   Uri uri = Uri.parse("tel:13023198367");
    Intent intent = new Intent(Intent.ACTION_CALL, uri);
    startActivity(intent);

2.发送短信

 Uri uri = Uri.parse("smsto:13023198367");
    Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
    intent.putExtra("sms_body", "The SMS text");
    startActivity(intent);

3.发送email

 Uri uri = Uri.parse(mailto:daizheng126@126.com);
    Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
    startActivity(intent);

4.播放媒体文件

  Intent intent = new Intent(Intent.ACTION_VIEW);
    
    Uri uri = Uri.parse("file:///sdcard/a.mp3");
    intent.setDataAndType(uri, "audio/mp3");
    startActivity(intent);


多个Activity之间传值 可以通过Bundle对象存储需要传递的数据,例如:

  在IntentDemoActivity里面传值,
  Intent explicitIntent=new Intent(IntentDemoActivity.this, ExplicitActivity.class); //这是在Intent的构造函数中指定
  EditText nameText=(EditText)findViewById(R.id.username);
  // 通过Bundle对象存储需要传递的数据 
  Bundle bundle=new Bundle();
  bundle.putString("userName", nameText.getText().toString());
  //把Bundle对象bundle给explicitIntent
  explicitIntent.putExtras(bundle);
  startActivity(explicitIntent);
 
两个个Activity之间切换
 

在ExplicitActivity页面上加一个返回按钮,并在事件写如下代码:

/*给上一个Activity返回结果*/

Intent intent=new Intent(ExplicitActivity.this, IntentDemoActivity.class);

 //这是在Intent的构造函数中指定 ExplicitActivity.this.setResult(RESULT_OK,intent); /*结束本Activity*/ ExplicitActivity.this.finish();

这样就返回到IntentDemoActivity这个Activity去了。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值