• 移动开发中的Scheme跳转说明——Allowing OtherApps to Start Your Activity


    Allowing OtherApps to Start Your Activity

     

    为了开发更多人使用的App,我们总希望我们的App能够提供一种接口被其他App调用。如我们常见的 大众点评    豆瓣。他们这种资源丰富的App能给我们提供很多丰富的资源。

    例如豆瓣的scheme

                     

                  <activity
                                android:name="com.douban.movie.PlayVideoActivity"
                                >
                                <intent-filter>
                                         <action
                                                   android:name="com.douban.movie"
                                                   >
                                         </action>
                                         <action
                                                   android:name="android.intent.action.VIEW"
                                                   >
                                         </action>
                                         <category
                                                   android:name="android.intent.category.DEFAULT"
                                                   >
                                         </category>
                                         <category
                                                   android:name="android.intent.category.BROWSABLE"
                                                   >
                                         </category>
                                         <data
                                                   android:scheme="http"
                                                   android:host="movie.douban.com"
                                                   android:pathPattern="/trailer/.*/"
                                                   >
                                         </data>
                                </intent-filter>
                       </activity>
     

     

    主要的是在于定义了:

     

    android:name="android.intent.category.BROWSABLE"


             

    <data
         android:scheme="http"
         android:host="movie.douban.com"
         android:pathPattern="/trailer/.*/"
    >
    </data>

    我们知道,如果用户的手机上没有安装您的App,第三方App如果需要使用Scheme跳转的话就会产生错误。

    这个样子的话我们的一般解决办法是直接跳转到网页版的应用上去。

    所以,将Scheme写成类似Url的形式方便我们进行应用内的跳转与网页上的跳转。

     

    当然,也可以分开来写,如同大众点评的。

     

     String id = "3102397";
                        try
                        {
                            Uri url = Uri.parse("dianping://shopinfo?id=" + id);
                            Intent intent = new Intent(Intent.ACTION_VIEW, url);
                            mContext.startActivity(intent);
                        }
                        catch (Exception e)
                        {
                            // 没有安装应用,默认打开HTML5站
                            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.dianping.com/shop/" + id));
                            mContext.startActivity(intent);
                        }


     

     

    附件中上传了一个自己写的shemedemo如果不清楚的可以看看


    demo

  • 相关阅读:
    Centos安装mysql 5.6
    Cache和Buffer都是缓存,主要的区别是什么?
    服务器遭受攻击后的处理过程
    划船学python——语法(二)循环语句
    划船学python——语法(一)条件语句
    划船学python——初识数据类型
    FTP与SFTP区别
    说一说Nginx Proxy配置
    Virtual Box 中的虚拟系统无法调整分辨率(无法自适应窗口大小)
    [error]subprocess.CalledProcessError: Command '['which', 'g++']' returned non-zero exit status 1.
  • 原文地址:https://www.cnblogs.com/james1207/p/3304042.html
Copyright © 2020-2023  润新知