美文网首页
Web跳转到app指定页面并传值

Web跳转到app指定页面并传值

作者: 白日梦__ | 来源:发表于2017-05-23 11:24 被阅读3141次

    在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();
    }
    

    相关文章

      网友评论

          本文标题:Web跳转到app指定页面并传值

          本文链接:https://www.haomeiwen.com/subject/ivuwxxtx.html