Android开发经验

从wap页面跳转app(Android)

2015-05-18  本文已影响6440人  李科吐温

注:代码块中出现了代码块中的代码块样式,请大家忽略这些,因为第一次用markdown不知道如何导致已经如何去掉,知道的朋友还请回复我。感谢!

概述

最近产品提出了新的需求:通过wap打开手机本地APP。
功能的实现主要涉及了以下几个知识点:

  1. scheme打开应用
  2. Theme.NoDisplay的使用
  3. activity父级activity的重建
scheme

scheme类似自定义url协议,我们可以通过自定义的协议来打开自己的应用,形如:
<pre><code>txvideo://xxxx</code></pre>

Theme.NoDisplay

在Android中想进行一些无界面的处理又不适合使用service时,此时可以在项目的AndroidManifest.xml文件中相应的Activity标签中添加这样一行:
<pre><code>android:theme=”@android:style/Theme.NoDisplay</code></pre>

activity父级activity的重建

当我们从wap页跳转到应用内部时,可能我们跳转到的不是应用的第一层级页面而是深层次的页面,这时候我们需要在关闭应用内部页面时,对高层的页面进行重建。

  1. 为activity指定父级activity
    <pre><code>
    <application ...>
    <activity ...
    android:name="com.example.Mainactivity">
    </activity>
    <activity ...
    android:name="com.example.SecondeActivity">
    android:parentActivityName="com.example.Mainactivity" >

    <meta-data
    android:name="android.support.PARENT_ACTIVITY"
    android:value="com.example.Mainactivity" />
    </activity>
    </application>
    </code></pre> </br>
  2. 二级页面返回时,重建任务栈
    <pre><code>
    @Override
    public void onBackPressed() {
    // 获得指向父级activity的intent,NavUtils在support v4 包中
    Intent upIntent = NavUtils.getParentActivityIntent(this);
    // 判断是否需要重建任务栈
    if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
    // 这个activity不是这个app任务的一部分, 所以当向上导航时创建
    // 用合成后退栈(synthesized back stack)创建一个新任务。
    TaskStackBuilder.create(this)
    // 添加这个activity的所有父activity到后退栈中
    .addNextIntentWithParentStack(upIntent)
    // 向上导航到最近的一个父activity
    .startActivities();
    } else {
    // 这个activity是这个app任务的一部分, 所以
    // 向上导航至逻辑父activity.
    NavUtils.navigateUpTo(this, upIntent);
    }
    super.onBackPressed();
    }
    </code></pre> </br>

效果与分析

效果图效果图

第一次录屏,效果不大好(有好的录屏方法请告诉我),建议下载代码测试

我们点击网页中的立即打开->弹出secondActivity->点击closeactivity按钮,程序对secondActivity的父级activity进行重建

编码与实现

源码下载

下载:源代码
github:点我

参考链接:
intent-filter之data (scheme使用)
提供向上导航(向上导航至父级activity)

上一篇 下一篇

猜你喜欢

热点阅读