一篇文章展示功能强大的 Intent 的主要用途

Intent

连接Activity、Service、BroadcastReceiver形成一个APP

在这里插入图片描述

Intent的基本应用:

  1. Activity之间的传递
  2. 开启一个Service,比如后台下载
  3. 传递广播

Intent对象的属性

Componentname属性
  • setComponent()
    第一个参数:应用的包名
    第二个参数:要启动的组件的类名
Intent intent=new Intent();
ComponentName componentName=new ComponentName("com.example.intent","com.example.intent.DetailActivity");
intent.setComponent(componentName);
startActivity(intent);

MainActivity :

public class MainActivity extends AppCompatActivity {

    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button) findViewById(R.id.btn1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent();
                ComponentName componentName=new ComponentName("com.example.intent","com.example.intent.DetailActivity");
                intent.setComponent(componentName);
                startActivity(intent);
            }
        });
    }
}

DetailActivity:

public class DetailActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
    }
}
Action和Data属性
  • Action指定那个将要执行的动作
  • Data指定具体的数据

例如:
在这里插入图片描述
因此,一般结合使用

具体案例:实现打电话、发短信功能

可以参考下面这篇文章:
https://blog.csdn.net/qq_44824148/article/details/106853990

Action和Category属性
  • Action指定那个将要执行的动作
  • Category对动作类别进行指定
具体案例:按键实现返回主页面
protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_index);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        Button button=(Button)findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent();
                intent.setAction(intent.ACTION_MAIN);
                intent.addCategory(intent.CATEGORY_HOME);
                startActivity(intent);
            }
        });
    }
Extras属性
  • 应用于多个Activity进行数据交换
  • putExtras()、getExtras()
Flags属性
  • 程序启动之后如何处理
    intent.setFlags (intent.FLAG_ ACTIVITY_NO_HISTORY);相当于重新启动

Intent种类

显式Intent

创建Intent对象时指定目标组件名称启动目标组件
在这里插入图片描述

隐式Intent

创建Intent对象时指定action、category、dataAndroid系统自动匹配目标组件

Intent intent=new Intent();
intent.setAction(intent.ACTION_ VIEW);
intent.setData(Uri.parse("http://www.mingribook.com"));
startActivity(intent);

显式Intent和隐式Intent的区别

显式Intent :
  • 直接指定目标组件的名称
  • 多用于在应用程序内部传递信息
隐式Intent :
  • 不会用组件名称定义要激活的目标组件
  • 多用于在不同应用程序之间传递消息
  • 过滤器
    在这里插入图片描述

通过< intent-filter >标记在AndroidManifest.xml文件中配置

<intent-filter>
	<action...../>
	<categor...../>
	<data...../>
</intent-filter>
具体案例:跳转到另一个Activity,实现全屏预览图片

具体点击下面链接
https://blog.csdn.net/qq_44824148/article/details/106895386

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值