`
renyuan_1991
  • 浏览: 70419 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
转载请注明出处:http://renyuan-1991.iteye.com/blog/2404247
今天记录并总结一下外部唤起app并传递参数相关的知识。
开门见山直接贴代码吧。
<activity
    android:name=".view.activity.UserLoginActivity"
    android:configChanges="keyboardHidden|orientation"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="stateHidden|adjustPan">
    <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <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:host="mytest.com"
             android:pathPrefix="/app"
             android:scheme="http">
        </data>
    </intent-filter>
</activity>

通过以上的设置,在包含“http://mytest.com/app”内容的短信或者网页中都可以打开我们的app。就这么简单!传入参数也很简单,如:“http://mytest.com/app?id = 100”便可向app传递参数,在activity中添加以下代码用于接收参数。

Intent intent = getIntent();
        String action = intent.getAction();
        if(Intent.ACTION_VIEW.equals(action)){
            Uri uri = intent.getData();
            if(uri != null){
                String id = uri.getQueryParameter("id");
                Log.i("MyLog-UserLoginActivity", "onCreate: id = " + id);
            }
        }


可是为什么我没打开呢?
第一:检查<intent-filter>是否是单独配置,如果需要打开的页面已经有了<intent-filter>,那最好再建一个<intent-filter>,不要混在一起,否者无效。
第二:请按照以上的格式编写,并检查设置的scheme和调用链接的scheme是否一致。action和category也要和例子中的一致,为什么要这样设置,他们代表了什么意思?别着急,后面会说。
第三:如果在网页中调用,请不要用自己写的webview。需要用系统的浏览器。
第四:以上三点都符合,为什么在短信中还是调不起来?那是因为有些手机的短信(主要跟手机的系统版本有关)只识别http合https开头的scheme。对于这一点目前没有找到解决办法,如果哪位大佬解决了这个问题请在留言中告诉我,定感激不尽!

<action android:name="android.intent.action.VIEW"></action>
的类型是有调用者决定的,我们想让系统的短息和浏览器打开我们的app,那就必须这么写,因为人家调用时指定的aciting是ACTION_VIEW。
<category android:name="android.intent.category.DEFAULT"></category>
是隐式意图调用时必须的配置
<category android:name="android.intent.category.BROWSABLE"></category>
是指定浏览器在特定情况下可以打开app。

就Android平台而言,URI主要分三个部分:scheme, authority and path。其中authority又分为host和port。格式如下:
scheme://host:port/path
举个实际的例子:
content://com.example.project:200/folder/subfolder/etc
\---------/  \---------------------------/ \---/ \--------------------------/
scheme                 host               port        path
                \--------------------------------/
                          authority   

也就是说可以在data标签中添加一下这些信息
<data android:host="string"
      android:mimeType="string"
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:port="string"
      android:scheme="string" />
转载请注明出处:[url] http://renyuan-1991.iteye.com/blog/2404247[/url]
希望爱好编程的小伙伴能加这个群,互相帮助,共同学习。群号: 141877583
分享到:
评论

相关推荐

    通过网页打开APP

    总结,通过网页打开APP并传递参数,主要是通过深度链接和应用链接技术实现的。在Android中,这需要在AndroidManifest.xml中配置Intent Filter,定义自定义URL Scheme,并在目标Activity中解析传入的参数。这不仅提升...

    通过url跳回app,含测试html

    用户在浏览器中打开这个HTML页面,点击链接,如果手机上安装了对应的App,系统就会自动启动App,并传递"id=123"这个参数。 为了处理这个Intent,我们需要在App的Activity中重写onCreate()方法,添加如下代码: ```...

    ios一个app应用内部调用另一个新的app应用

    4. **传递参数**:如果需要在调用时传递数据,这些数据可以编码到URL的查询字符串中。例如,`appa://open?param1=value1&param2=value2`。在被调用的应用中,你可以在`application:openURL:options:`方法中解析这些...

    EBS通过URL进入表单

    通过URL打开表单时,可以传递参数给表单。这通过在URL中添加参数键值对的形式实现。例如,在form_params参数中可以设置特定的键值对来传递表单需要的配置或数据。 知识点七:链接点击登录后打开特定表单的场景 在...

    html中打开app

    打开App ``` 这样,当用户点击链接时,Android应用可以通过解析URI获取参数并执行相应操作。 3. **JavaScript处理**: 为了确保在没有对应App的设备上不会出现错误,我们可以使用JavaScript进行检测和处理。通过`...

    android通过html打开本地app

    这个资源"android通过html打开本地app"提供了一种实现方式,使得开发者能够从HTML页面中启动Android应用程序,并且能够传递数据。下面我们将详细探讨这一技术及其相关知识点。 1. Web Intent 桥接: HTML页面不能...

    通过Html网页调用本地安卓app

    在现代的移动应用开发中,将网页与原生应用程序(如安卓APP)集成是一种常见的需求。这使得用户可以通过网页交互来启动本地应用,...在实际项目中,根据具体需求,还可以扩展到传递参数、处理多种类型的URL等高级用法。

    ios应用源码之给大家分享代码 如何自定义协议从自己的一个app打开另一个app ip

    提供的“iphoneurlscheme_reference.pdf”文档很可能是关于iOS URL Scheme的官方参考或教程,里面应该包含更多细节,如如何处理URL参数、如何安全地传递数据等。建议仔细阅读并结合实际项目进行实践。 通过以上步骤...

    Android-ActivityRouter路由框架通过注解实现URL打开Activity

    本文将深入探讨一个名为"Android-ActivityRouter"的路由框架,该框架利用注解技术来实现URL打开Activity的功能。这使得开发者能够方便地通过URL地址来启动Activity,同时支持在WebView和外部浏览器环境中运行,且...

    iOS 启动第三方 App,以及调用 DeepLink 工具类.zip

    - 检查App是否已安装:通过尝试打开URL并捕获可能的错误来判断。 - 创建DeepLink URL:根据给定的路径和参数生成URL。 - 打开DeepLink:使用上述提到的方法启动目标App并传递DeepLink。 使用这样的工具类,你可以...

    ios-app相互跳转并传参.zip

    1. **URL Schemes**: iOS允许开发者为自己的应用创建唯一的URL scheme,通过这种方式,外部应用可以打开你的应用并传递特定的数据。例如,当你在另一个应用中点击一个链接,它可能会使用如`yourapp://yourdata`这样...

    网页跳转APP

    参数(如`param1`和`param2`)可以传递到APP内,APP解析这些参数后,可以根据它们的值决定显示哪个页面或执行什么操作。 文件名`jumpApp`可能包含实现上述功能的JavaScript代码示例,或者是用于配置Android和iOS的...

    农行商e付 在农行app调起支付时,直接返回的支付链接打开是空白页,需要将支付url做处理,才能正确打开

    5. **适配农行APP**:农行APP可能要求特定的处理,比如在URL前面添加特定前缀或后缀,或者需要通过特定的方式(如JSON对象)传递参数,这需要参照文档中的指引。 6. **安全考虑**:在处理URL之前,确保所有的敏感...

    微信小程序页面的生命周期和参数传递

    它允许开发者通过编写JavaScript、WXML(Weixin Markup Language)和WXSS(Weixin Style Sheets)来构建用户界面,并通过微信运行环境执行。在本示例项目中,我们将深入探讨微信小程序页面的生命周期和参数传递。 ...

    5+APP和手机浏览器,唤醒微信App.zip

    例如,当用户点击一个链接时,浏览器可以通过发送一个隐式Intent来唤醒微信,并传递相关的参数。 在iOS系统中,URL Scheme是一种自定义的协议,类似http或https,但由应用自身定义。每个应用可以注册自己的URL ...

    swift-整理了一些常用的iOSAPP的URLSchemes

    比如,你可以通过URL Scheme传递参数,使应用的不同视图控制器根据参数进行不同的操作。例如,跳转到特定的页面或者执行特定的功能。 在GSFOpenURL-master这个压缩包中,可能包含了一个示例项目,演示了如何创建、...

    iOS俩个app传值

    例如,一个App可以注册`myapp://`作为它的Scheme,然后通过`[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"myapp://param1=abc&param2=123"]]`来打开它并传递参数。 2. **Universal Links**:...

    iphone url获取

    6. **URL Scheme**:每个应用都有自己的URL Scheme,如`myapp://`,用于识别和打开该应用。在`Info.plist`文件中定义你的URL Scheme,然后在代码中监听并处理这些URL。 7. **URLQueryItem**:用于处理URL中的查询...

    web启动app

    在现代移动互联网时代,"web启动app"是一个重要的技术实现,它使得用户通过网页可以直接启动已安装在设备上的对应应用程序,提升用户体验并加强了网页与原生应用的交互。这一功能通常依赖于JavaScript(js)技术和...

    apicloud拉起小程序并传递参数的方法示例

    Apicloud作为一个移动应用云端开发平台,其提供的API可以方便开发者在自己的App中实现各种功能,包括拉起微信小程序并传递参数。Apicloud的wx模块提供了launchMiniProgram方法,允许App打开微信小程序。 首先需要...

Global site tag (gtag.js) - Google Analytics