逻辑如下:App分享携带商品的ID分享为网页详情,生成链接,他人从微信或者QQ得到链接后进入浏览器拉起APP并主动跳转至详情
实现过程如下:
1.在AndroidManifest的activity中添加如下:
例如DetailActivity
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="splash"
android:scheme="zhu" />
</intent-filter>
Activity 的启动模式要更改为 singleTask
我们在接收到后 接受的是如下数据
dat=zhu://splash?uid=&gid=6152 cmp=com.knight.jinlichi/.ui.DetailActivity
2.在DetailActivity中的oncreate中加入如下则可获取数据
我们这里要获取gid与uid,可以看到uid为空(因为分享的时候没有)
Intent intent=getIntent();
String scheme = intent.getScheme();
Uri uri = intent.getData();
Log.d(TAG, " scheme" + scheme);
if (uri != null) {
String dataString = intent.getDataString();
Log.d(TAG, dataString + "");
String gid = uri.getQueryParameter("gid");
String uid = uri.getQueryParameter("uid");
}
通过上面的方法获取到参数就能实现想要的操作了
遇到的问题
1.商品是取到了,但是返回时直接退出app了,这里应该是在首页获得这个参数然后通过 Intent跳转携带参数过来,这样退出就解决了问题
2.此方法只能是App在未打开状态下才能拉起,在已打开的时候则不能进行跳转
解决方法如下
在Activity中加入
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Intent intent=getIntent();
String scheme = intent.getScheme();
Uri uri = intent.getData();
Log.d(TAG, " scheme" + scheme);
if (uri != null) {
String dataString = intent.getDataString();
Log.d(TAG, dataString + "");
String gid = uri.getQueryParameter("gid");
String uid = uri.getQueryParameter("uid");
}
}
完结.end