在manifest文件中申明scheme和parentActivity
<activity android:name=".SecondActivity"
android:parentActivityName=".MainActivity">
<!--申明parentActivity,用户按返回键后返回主页面-->
<!--在Android 4.1版本之后,可以直接使用android:parentActivityName这个属性来进行指定-->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!--下面所设置的值需要和html端对调-->
<!--在data里设置了 scheme和host,则该Activity可以接收和处理类似于 "share://article/XXX"的链接-->
<data
android:host="article"
android:scheme="share"
android:pathPrefix="/attr" />
</intent-filter>
</activity>
h5跳转
<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>
示例
<a href="share://article/attr?name=zhangsan&age=26">启动应用程序</a>
scheme:判别启动的App
host:适当记述
path:传值时必须的key ※没有也可以
query:获取值的Key和Value ※没有也可以
activity中获取传递过来的参数
Intent i_getvalue = getIntent();
String action = i_getvalue.getAction();
if(Intent.ACTION_VIEW.equals(action)){
Uri uri = i_getvalue.getData();
if(uri != null){
String name = uri.getQueryParameter("name");
String age= uri.getQueryParameter("age");
}
}
在二级页面中对返回键做处理
由于是网页打开的app指定二级页面,activity栈中只存在SecondActivity这一个activity,所以当点击返回按钮的时候,会直接退出当前app。我们希望按返回的时候,回到MainActivity,所以这里需要处理一下
@Override
public void onBackPressed() {
//NavUtils.getParentActivityIntent()方法可以获取到跳转至父Activity的Intent
//如果父Activity和当前Activity是在同一个Task中的,则直接调用navigateUpTo()方法进行跳转
//如果不在同一个Task中的,则需要借助TaskStackBuilder创建一个新的Task
Intent upIntent = NavUtils.getParentActivityIntent(this);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
TaskStackBuilder.create(this)
.addNextIntentWithParentStack(upIntent)
.startActivities();
} else {
upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
NavUtils.navigateUpTo(this, upIntent);
}
super.onBackPressed();
}