Android P的Intent显示启动和隐式启动,使用data标签隐藏应用图标

Intent是一个消息传递对象,尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:

  • 启动activity
  • 启动服务
  • 传递广播

Intent分为显示和隐式:

一、显示Intent

完全按指定类名和Activity名来启动组件。

1、传入Activity名
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);

或者启动服务

Intent downloadIntent = new Intent(this, DownloadService.class);
downloadIntent.setData(Uri.parse("http://www.example.com/image.png"));
startService(downloadIntent);
2、传入Package和Activity名
ComponentName componentName = new ComponentName("com.demo.demoapp" "com.demo.demoapp.SecondActivity");
Intent intent = new Intent();
intent.setComponent(componentName);
startActivity(intent);

二、隐式Intent

不会指定特定的组件,与Intent过滤器适配,找到要启动的组件。
隐式启动主要涉及到intent-filter中的三个标签:

  • category
  • action
  • data
1、通过action
 <activity
          android:name="com.demo.demoapp.SecondActivity">
          <intent-filter>
              <action android:name="com.demo.intent.action.abc"/>
              <category android:name="android.intent.category.efg"/>
          </intent-filter>
</activity>

启动方式:

Intent intent = new Intent();
intent.setAction("com.demo.intent.action.abc");
startActivity(intent);

或者:

Intent intent = new Intent("com.demo.intent.action.abc");
startActivity(intent);
2、通过action和category
Intent intent = new Intent();
intent.setAction("com.demo.intent.action.abc");
intent.addCategory("android.intent.category.efg");
startActivity(intent);
3、通过action和data启动

data标签句法:

<data android:scheme="string"
      android:host="string"
      android:port="string"
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:mimeType="string" />

data标签描述:
?/:[ ||]

例如:http://www.baidu.com:8080/person

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <data  android:scheme="com.demo.demoapp" android:host="info_activity"/>
    </intent-filter>
</activity>

构成的URI为:com.demo.demoapp://info_activity
使用data标签启动activity:

Uri data = Uri.parse("com.demo.demoapp://info_activity");
Intent intent = new Intent(Intent.ACTION_MAIN,data);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

三、使用标签隐藏应用图标

给MainActivity配置标签,scheme和host任意:

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                 <data  android:scheme="com.demo.demoapp" android:host="info_activity"/>
        </activity>

作用:
因为显示应用图标必须同时满足

而加入了标签后,由于data存在,无法匹配到应用图标的条件。

所以主Home画面不在显示应用图标。

笔记:
Acitvity设置为Android设备启动Home画面的方法

        <activity android:name=".HomeActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

将Acitvity设置为App启动默认画面

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
        </activity>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sunxiaolin2016

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

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

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

打赏作者

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

抵扣说明:

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

余额充值