activity启动方式:显式&隐式

1、显式启动activity
Intent intent = new Intent();
intent.setClass(this,C.class);
startActivity(intent);
直接以activity名称启动
2、隐式启动activity
    这种方式启动activity不需要指定activity的名称,要在intent-filter中配置action、category、data等属性值,
然后设置启动activity的intent的action、category、data等属性
    action:intent中的action和intent-filter中配置的其中一个action一致
    category:可有可无,如果有则必须全部和intent-filter中的一致
    data:可有可无,如果有则必须全部和intent-filter中的一致
启动:
Intent intent = new Intent();
intent.setAction("test");//自定义
intent.addCategory("android");//自定义
intent.setDataAndType(Uri.parse("http://www.baidu.com:8080/mpath"),"image/jpeg");
startActivity(intent);
过滤器:
<activity
android:configChanges="screenLayout"
android:taskAffinity="con.new.task"
android:name=".D"
android:launchMode="singleTask">
<intent-filter>
<action android:name="test"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android"/>
<data
android:scheme="http"
android:host="www.baidu.com"
android:port="8080"
android:path="/mpath"
android:mimeType="image/jpeg"
/>
</intent-filter>
</activity>
在隐式启动之前要做校验
PackageManager manager = getPackageManager();
ResolveInfo info = manager.resolveActivity(intent,PackageManager.MATCH_DEFAULT_ONLY);
如果info为空则启动的时候就会报错,resolveActivity方法用于查询符合intent和标记位的activity
PackageManager.MATCH_DEFAULT_ONLY就是activity中配置了
<category android:name="android.intent.category.DEFAULT"/>
下面这个方法如果list是空的启动的时候也会报错
List<ResolveInfo> list = manager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bdawn

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

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

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

打赏作者

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

抵扣说明:

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

余额充值