显式Intent和隐式Intent区别

显式Intent和隐式Intent区别

Intent译为意图, Intent 不仅可用于应用程序之间,也可用于应用程序内部的 Activity和Service 之间的交互.

Intent的基本用法:一种是显式的 Intent ,即在构造 Intent 对象时就指定接收者,另一种是隐式的 Intent ,即Intent 的发送者在构造 Intent 对象时,并不知道也不关心接收者是谁,有利于降低发送者和接收者之间的耦合.

显式Intent的用法:
 public void sendMessage(View view) {

    // Toast.makeText(MainActivity.this,R.string.toast,Toast.LENGTH_LONG).show();
    Intent intent = new Intent(this, Main2Activity.class);
    //比较常用的Intent方法
    // intent.putExtra();
    startActivity(intent);

    }

Intent传值类型: 



显示Intent接收者: 

getIntent().+后面你传值类型






隐式Intent的用法:没有固定的接收方

方式1 

Uri number = Uri.parse("tel:12345678"); 
//此处包含了uri,系统根据类型自动确定相应的MIME 类型,不需要setType()方法 
Intent callIntent = new Intent(Intent.ACTION_DIAL, number); 


方式2

//intent action属性 
Intent intent = new Intent(Intent.ACTION_PICK); 
//选择图片 
intent.setType(“image/*”); 
// intent.putExtra();



验证是否存在接收 Intent 的应用(适用于隐式Intent)
如果你调用了Intent,但设备上没有可用于处理 Intent 的应用,应用会崩溃.

//这是官方给出的: 


PackageManager packageManager = getPackageManager(); 
List activities = packageManager.queryIntentActivities(intent, 
PackageManager.MATCH_DEFAULT_ONLY); 
boolean isIntentSafe = activities.size() > 0;

Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California"); 
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location); 
// Verify it resolves 
PackageManager packageManager = getPackageManager(); 
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0); 
boolean isIntentSafe = activities.size() > 0; 
// Start an activity if it's safe 
if (isIntentSafe) { 
startActivity(mapIntent);}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值