Android语言基础教程(96)Android应用核心Intent介绍:Intent原来这么骚!Android开发老司机带你解锁应用“撩妹”神技

兄弟们,今天咱们来唠唠Android开发的灵魂人物——Intent。这玩意儿说白了就是应用界的“社交牛逼症患者”,专门负责在不同组件之间穿针引线(比如让Activity跳个槽、Service送个秋波)。但很多新手一看到Intent就头大,感觉像在学撩妹套路——理论都会,实战全废!别急,老司机这就带你把Intent剥个精光,顺便附上能直接抄作业的代码!

一、Intent到底是啥?比相亲中介还忙的“月老”

想象一下:你想从朋友圈首页跳转到好友详情页,总不能对着手机喊“芝麻开门”吧?这时候就得靠Intent出马。它就像个自带GPS的快递小哥,身上揣着收件人地址(目标组件)和包裹内容(传递数据),在Activity、Service、BroadcastReceiver三大佬之间疯狂送货。

核心技能拆解

  • 显式Intent:像直男表白,精准点名“王翠花我喜欢你”!直接指定要启动哪个Activity/Service。
  • 隐式Intent:像海王群发“在吗?”,让系统匹配符合条件的小姐姐(比如所有能处理图片的应用)。
  • 数据传递:能捎带字符串、数字甚至对象(需序列化),堪比哆啦A梦的百宝袋。
二、显式Intent:直球出击的“钢铁直男”

当你明确知道要启动哪个组件时,显式Intent就是最稳的老铁。来看这段让Activity“闪婚”的代码

// 在MainActivity中撩拨SecondActivity
Intent explicitIntent = new Intent(MainActivity.this, SecondActivity.class);
explicitIntent.putExtra("message", "你好,新页面!"); // 塞小纸条
explicitIntent.putExtra("score", 100); // 带个红包
startActivity(explicitIntent);

接收方SecondActivity里别忘了拆包裹:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String message = getIntent().getStringExtra("message"); // 掏小纸条
    int score = getIntent().getIntExtra("score", 0); // 拆红包
    TextView tv = findViewById(R.id.text_view);
    tv.setText(message + " 红包金额:" + score);
}

适用场景:自家应用内部跳转,比如从登录页蹦到主页,稳得一批!

三、隐式Intent:全网撒网的“海王之王”

当你需要调用系统功能(比如拍照、选文件)时,隐式Intent就开始了它的表演。它不指定具体目标,而是抛出条件:“我要找个能处理图片的应用!” 系统就会拉出所有符合条件的App让你翻牌子。

经典撩妹三件套

  1. Action:声明你想干啥(比如“想找个人看风景”)
  2. Category:补充条件(比如“最好是会拍照的”)
  3. Data:具体需求(比如“要看秋叶原的樱花”)

实战:召唤系统相册选照片

Intent implicitIntent = new Intent();
implicitIntent.setAction(Intent.ACTION_GET_CONTENT); // 动作:获取内容
implicitIntent.setType("image/*"); // 类型:所有图片
implicitIntent.addCategory(Intent.CATEGORY_OPENABLE); // 附加条件:能打开的文件
startActivityForResult(implicitIntent, 666); // 带期待值启动

接收返回结果(相当于等妹子回消息):

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 666 && resultCode == RESULT_OK) {
        Uri selectedImage = data.getData(); // 拿到妹子发来的照片地址
        // 接下来可以秀操作了,比如用Glide加载图片显示
    }
}

坑位预警:用隐式Intent前记得在AndroidManifest.xml给目标Activity配<intent-filter>,就像给自家闺女贴征婚启事!

四、Intent的隐藏才艺:让组件们“群魔乱舞”

除了让Activity蹦迪,Intent还能干这些骚操作:

1. 启动Service搞后台暧昧

// 让Service在后台默默干活
Intent serviceIntent = new Intent(this, MyService.class);
serviceIntent.putExtra("task", "偷偷下载小姐姐图片");
startService(serviceIntent);

2. 发送Broadcast当八卦广播站

// 发个全网通知:“我脱单了!”
Intent broadcastIntent = new Intent("com.example.I_AM_IN_LOVE");
broadcastIntent.putExtra("lover_name", "新垣结衣");
sendBroadcast(broadcastIntent);
五、避坑指南:Intent翻车现场实录
  1. 权限不够被系统打脸:想调用相机结果崩溃?记得先在Manifest里申请<uses-permission>
  2. 找不到目标当场社死:用隐式Intent前务必resolveActivity()检查,避免No Activity found错误。
  3. 数据太大直接撑爆:传递Bitmap别傻傻用Intent,超过1MB就等着系统把你KO吧!
  4. 安全漏洞被黑客绿:Export属性别乱设为true,防止隔壁App偷窥你的Intent。
六、高阶玩法:Intent的“三十六计”
  • PendingIntent:相当于预授权支票,允许别人用你的身份发Intent(通知栏和闹钟常用)
  • Intent Filter:给自己的Activity贴标签,比如声明“我能处理所有.jpg文件”
  • Deep Link:让用户点链接直接跳转你App的指定页面,堪称流量收割机
结语

看完这篇,要是你还觉得Intent是玄学,建议把手机泡水冷静下(开玩笑的)。其实它就像个超级社交工具——用显式Intent稳扎稳打,用隐式Intent广撒网。记住:Android世界没有Intent搞不定的关系,如果有,就再加一个Bundle!

最后送上祖传口诀:

显式撩自家,隐式call全网
数据用Extra,跳转靠Action
权限不忘记,安全心中放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

值引力

持续创作,多谢支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值