将aliexpress的商品分享到自己的APP中以及缓存问题

2017-12-05  本文已影响0人  s酸菜

前言:前几天一个朋友说遇到一个问题,从海外天猫分享商品到自己的App中,当自己的App已经启动的时候是没问题得,但是如果自己的App不启动,多次分享的商品都是第一个商品。为了解决这个问题,我就写了一个demo来测试。

现在有很多的应用都会将知名应用中的商品分享到自己的App,要实现这个功能我们应该做些什么呢?

    <activity
            android:name=".GoodsDetailActivity"
            android:screenOrientation="portrait">
            <!-- 定义一个启动的过滤器 -->
            <intent-filter>
                <!--  配置action为发送的类型 -->
                <action android:name="android.intent.action.SEND"/> 
                <category android:name="android.intent.category.DEFAULT"/>
                <!--  定义媒体类型为文本类型 -->
                <data android:mimeType="text/plain"/>
            </intent-filter>
    </activity>
Intent intent = getIntent();
if (intent != null) {
            String action = intent.getAction();
            String type = intent.getType();
            if (!TextUtils.isEmpty(action) && !TextUtils.isEmpty(type)) {
                if (action.equals(Intent.ACTION_SEND) && type.equals("text/plain")) {
                    String str = intent.getStringExtra(Intent.EXTRA_TEXT);
                    Log.e(TAG, "分享过来的内容:" + str);
                }
            }
        }

demo已经启动的情况.gif

从图中最后可以看出,两次分享的内容不一样。表示分享成功,没有问题。

demo未启动的情况.gif

从效果图中可以看到,两次分享的内容一样。这里就出现了一个问题。首先排除aliexpress分享问题,从启动demo的结果可以确定。经过查询资料,了解到应该是由于缓存原因。

    <activity
            android:name=".GoodsDetailActivity"
            android:noHistory="true"
            android:screenOrientation="portrait">
            <!-- 定义一个启动的过滤器 -->
            <intent-filter>
                <!--  配置action为发送的类型 -->
                <action android:name="android.intent.action.SEND"/> 
                <category android:name="android.intent.category.DEFAULT"/>
                <!--  定义媒体类型为文本类型 -->
                <data android:mimeType="text/plain"/>
            </intent-filter>
    </activity>
添加了nohistroy属性的情况.gif

从效果图可以看出,两次分享内容符合实际,不再重复。解决了在demo未启动的情况下分享出现重复问题。

最后附上demo地址:ShareDemo

上一篇 下一篇

猜你喜欢

热点阅读