一、如果多个Activity拥有同一个Intent Action,启动时用同一个Action启动会是什么情况?
如何指定某一个Activity启动?
在多个Activity拥有同一个Intent Action的情况下,如若想启动某一指定Activity,则在该<intent-filter>
中添加<data android:scheme="app"/>。而且,将启动的代码写为:
startActivity(new Intent("com.w.learnIntent.intent.action.MyAty", Uri.parse("app://myaty1")));
二、如何通过浏览器链接启动本地Activity?
1、在新建的项目LaunchLocalApp中新建一个Activity,并在AndroidManifest.xml文件中进行配置:
<activity android:name=".LocalAppAty">
<intent-filter>
<category android:name="android.intent.category.BROWSABLE"/> <!--可浏览的-->
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="android.intent.action.VIEW"/>
<data android:scheme="app"/> <!--协议的名字-->
</intent-filter>
</activity>
将其安装到模拟器上。
2、编写index.html页面(WebStorm)并执行:
<a href="app://LocalApp">Launch My App</a> <!--LocalApp是任意参数-->
3、通过模拟器内的浏览器访问10.0.2.2:63343/WebStormProjects/index.html,点击链接即可访问该Activity
(localhost通过模拟器来访问,其地址是10.0.2.2)。
(附加:
使用WebStorm时,弹出requested without authorization,you can copy URL and open it in browser to trust it的问题。
解决方案:
File—>Settings—>Build,Execution,Deployment—>Debugger中,勾选上Allow unsigned requests的选项,应用即可。)
三、如何能接收到传过来的参数?
LocalAppAty.java:
Uri uri = getIntent().getData();
System.out.println(uri);
运行程序则控制台输出:
I/System.out: app://LocalApp