Intent

Intent是什么?

Intent一般作为参数来使用,协助完成 Android各个组件之间的通讯。

Intent主要包括7个属性:Action(动作)Data(数据)Category(类别)Type(数据类型)Component(组件)Extra(扩展信息)Flag(标志位)。其中最常用的是Action属性和Data属性。

表现形式:

  • 启动Activity

    startActivity(intent);
    startActivityForResult(intent, requestCode);
  • 启动Service

    startService(intent);
  • 发送Broadcast

    sendBroadcast(intent);
    sendOrderedBroadcast(intent, sendOrderedBroadcast);

Intent种类

显式Intent

//最常用方法
Intent intent = new Intent(this, SecondActivity.class);  
startActivity(intent);  

//setClass 或者 setClassName
Intent intent = new Intent();    
intent.setClass(this, SecondActivity.class);  
//或者intent.setClassName(this, "com.example.app.SecondActivity");  
//或者intent.setClassName(this.getPackageName(),"com.example.app.SecondActivity");            
startActivity(intent);  

//setComponent
Intent intent = new Intent();    
intent.setComponent(new ComponentName(getPackageName(), SecondActivity.class))
startActivity(intent);

隐式Intent

隐式,不明确指定启动哪个Activity,而是设置Action、Data、Category,让系统来筛选出合适的Activity。筛选是根据所有的``来筛选。

//打电话
Uri uri = Uri.parse("tel:10010");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent);

//使用选择器
Intent sendIntent = new Intent(Intent.ACTION_SEND);
Intent chooser = Intent.createChooser(sendIntent, title);
// Verify the original intent will resolve to at least one activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(chooser);
}

Last updated

Was this helpful?