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

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

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

  • 第一步:在自己的App中对应的activity在AndroidManifest.xml中配置属性。配置完成以后就能在分享中看到自己的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>
  • 第二步:在对应的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,打开aliexpress,分享商品详情到demo中。
demo已经启动的情况.gif

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

  • 效果图二:demo不启动,打开aliexpress,同样分享商品到自己的App中。
demo未启动的情况.gif

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

  • 效果图三:对当前activity的manifest中添加 android:noHistory="true"属性,然后再次测试。
    <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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,455评论 25 708
  • 致生活 感觉,你就是个爱开玩笑的人 每当我有了个新计划 想要从战斗的前沿退下来的时候 你总是出其不意的 来个当头棒...
    王小唐阅读 202评论 0 0
  • 2012年,一次心血来场的冲动, 让我相识你——时间管理, 但我未能挽起你的手臂, 你悄然从我的生活中逝去; 20...
    清荷_edfa阅读 236评论 2 7
  • 黑本(20170908) 夫妻相处授新招,相敬如宾境界高。 就是回答常管用,无由生气也能消。 阴阳殊性班昭定,男女...
    黑本儿阅读 117评论 0 1
  • 王大智是我弟弟。但他说我不是他姐姐,而是堂姐。因为姐姐是一个妈妈生的,堂姐不是。我说,好的,那你当我的小男...
    王胖胖摇啊摇阅读 656评论 2 1