在android中,intent的使用有两种方式:一种为显式使用,一种是隐式。
显式使用的一种方式是通过Intent 直接定义跳转Activity的对象,例如:
Intent i = new Intent(Activity.this,Activity.class);
隐式使用时在AndroidManifest.xml 中声明Activity 的标签中设置子标签:
<intent-filter>
<category name="android.intentcategory.DEFAULT"/>
<action name="com.example.intent.action.acitivityb" />
</intent-filter>
然后在ActivityA中调用
startActivity(new Intent("com.example.intent.action.activityb"));
隐式使用Intent 有一个优势就是可以启动其他应用程序中的Activity,而在显式使用Intent是达不到这种效果的
如果希望应用程序的Activity不能被其他应用程序访问的话,可以在<activity>标签里边添加一个属性,anddroid:exported="false" 即可
如果多个activity使用相同的action,可以在intent-filter中添加一个属性
<data android:scheme:"app"/>
启动intent 的方法为:
startActivity(new Intent("com.example.intent.action.activityb",Uri.parse("app://params")))
通过点击浏览器连接启动本地Activiy的方法:
在AndroidManifest.xml中的activity便签里添加
<category name="android.intent.category.BROWSABLE"/>
<category name="android.intent.category.DEFAULT"/>
<action name="android.intent.action.VIEW"/>
<data scheme="app"/>
然后通过手机浏览器连接:app::params 可以打开activity
在activity 中通过以下代码访问参数:
Uri uri = getIntent().getData();