activity启动方式:显式&隐式

    xiaoxiao2026-08-22  0

    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和标记位的activityPackageManager.MATCH_DEFAULT_ONLY就是activity中配置了<category android:name="android.intent.category.DEFAULT"/>下面这个方法如果list是空的启动的时候也会报错List<ResolveInfo> list = manager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);
    转载请注明原文地址: https://ju.6miu.com/read-1311432.html
    最新回复(0)