android scheme 跳转应用 如何获取intent传的参数

首先需要在AndroidManifest.xml  修改

<activity android:name="com.test.apptest.AppActivity"

          android:label="@string/app_name"

          android:launchMode="singleTask”>//Activity的Launch mode详解


    <intent-filter>

        <actionandroid:name="android.intent.action.MAIN"/>

        <actionandroid:name="android.intent.action.VIEW"/>

        <categoryandroid:name="android.intent.category.LAUNCHER"/>

    </intent-filter>


    <intent-filter>

        <action android:name="android.intent.action.VIEW" />

        <data android:scheme="apptest"/>

        <category android:name="android.intent.category.DEFAULT"/>

        <category android:name="android.intent.category.BROWSABLE"/>

    </intent-filter>


</activity>



singleTasksingleInstance方式

如果Activity 已经启动过了会重新唤醒  (从app 跳转到网页或其它app 在跳转回来)

protected void onNewIntent(Intent intent) {

   super.onNewIntent(intent);

   setIntent(intent);

   //here we can use getIntent() to get the extra data.

}

@Override
protected voidonResume() {
    super.onResume();
    onNewIntent(this.getIntent());
   Intent intent = getIntent();
    String scheme = intent.getScheme();
    Uri uri = intent.getData();
    System.out.println("scheme:"+scheme);
    if(uri != null) {
    String host = uri.getHost();
    String dataString = intent.getDataString();
    String id = uri.getQueryParameter("d");
    String path = uri.getPath();
    String path1 = uri.getEncodedPath();
    String queryString = uri.getQuery();
    System.out.println("host:"+host);
    System.out.println("dataString:"+dataString);
    System.out.println("id:"+id);
    System.out.println("path:"+path);
    System.out.println("path1:"+path1);
    System.out.println("queryString:"+queryString);
    }

}


如果Activity 没有启动过 则重新创建    (从网页或其它app  打开app)

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();
    String scheme = intent.getScheme();
    Uri uri = intent.getData();
    System.out.println("scheme:"+scheme);
    if(uri != null) {
    String host = uri.getHost();
    String dataString = intent.getDataString();
    String id = uri.getQueryParameter("d");
    String path = uri.getPath();
    String path1 = uri.getEncodedPath();
    String queryString = uri.getQuery();
    System.out.println("host:"+host);
    System.out.println("dataString:"+dataString);
    System.out.println("id:"+id);
    System.out.println("path:"+path);
    System.out.println("path1:"+path1);
    System.out.println("queryString:"+queryString);
    }

}



 
 
 
 
 
 

    



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Scheme跳转协议是一种在Android操作系统中用于app之间通信的机制。通过Scheme跳转协议,一个app可以通过调用另一个app的特定功能或界面,实现跳转参数的功能。 Android Scheme跳转协议的实现过程如下: 1. 在待跳转的app中,需要先定义一个特定的Scheme,用于唯一标识该app。一般情况下,Scheme由app的包名或自定义的scheme名称组成。 2. 在相应的Activity或Fragment中,通过Intent设置该Activity或FragmentScheme,以及需要递的参数,如数据、标志位等。 3. 在需要跳转到该app的app中,通过调用系统提供的隐式Intent的方式,并设置跳转Scheme以及递的参数,发起跳转。 4. 如果目标app已安装在设备上,在符合条件的应用列表中,用户可以选择使用该app打开链接。 5. 目标app接收到跳转请求后,在其Manifest文件中通过声明Intent过滤器,匹配相应的Scheme和路径,并执行对应的操作或界面跳转。 需要注意的是,为了保证Scheme跳转的可用性,需要在app安装时注册相应的Scheme,以便系统能够正确地将请求导向目标app。 Scheme跳转协议在实际应用中常被用于app之间的跳转和通信,例如在支付宝中使用支付宝Scheme跳转到其他第三方APP完成支付,或者在浏览器中使用特定的Scheme跳转到其他APP打开指定的页面等。 总之,Android Scheme跳转协议是一种方便实现app之间通信的机制,通过定义特定的Scheme和使用Intent实现跳转参,能够提供更丰富的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值