zoukankan      html  css  js  c++  java
  • 微信文档采用第三方方式打开选择qq

    本篇文章主要记录解决:

    微信打开文档后,----选择第三方应用打开---选择自己的项目,跳转到--列表选择界面--选择好友---然后返回到最近聊天界面,其中列表选择界面onDestroy的问题。

    反编译qq清单文件,发现点:

    com.tencent.mobileqq.activity.JumpActivity ForwardRecentActivity
    com.tencent.mobileqq.activity. ForwardFriendListActivity
    1.android:alwaysRetainTaskState="true"
    http://blog.sina.com.cn/s/blog_5de73d0b0102vpai.html
    2.Android相关属性的介绍:android:exported = true
    https://blog.csdn.net/u010164190/article/details/51263000
    3.android:configChanges="locale"
    https://blog.csdn.net/garybook/article/details/17025087

    根据微信文档-采用第三方文件打开--选择qq,执行分享流程,查看ActivityManager   TAG的日志,获取到下面的log信息

    START u0 {act=android.intent.action.VIEW 
        dat=file:///storage/emulated/0/Tencent/QQfile_recv/zookeeper3.4.1安装文档.docx typ=application/vnd.openxmlformats-officedocument.wordprocessingml.document flg=0x50000000 cmp=com.tencent.mobileqq/.activity.JumpActivity (has extras)} from uid 10134 on display 0
    07-25 14:10:56.094 1424-8926/? D/ActivityManager: 
        
    
    realStartActivityLocked -- app = ProcessRecord{2aedb64 2117:com.tencent.mobileqq/u0a136}, r= ActivityRecord{db2e5a5 u0 
        
    com.tencent.mobileqq.activity.JumpActivity t1469}
    07-25 14:10:56.113 1424-8926/? I/ActivityManager: 
    dispatchActivityResumed for activity com.tencent.mobileqq/com.tencent.mobileqq.activity.JumpActivity uid 10136
    
    07-25 14:10:56.139 1424-3639/? I/ActivityManager: 
        
    START u0 {dat=file:///storage/emulated/0/Tencent/QQfile_recv/zookeeper3.4.1安装文档.docx flg=0x40000 cmp=com.tencent.mobileqq/.activity.ForwardRecentActivity (has extras)} from uid 10136 on display 0
    
    
    07-25 14:10:56.158 1424-3115/? D/ActivityManager: 
        
    realStartActivityLocked -- app = ProcessRecord{2aedb64 2117:com.tencent.mobileqq/u0a136}, r= ActivityRecord{b0701d2 u0 com.tencent.mobileqq/.activity.ForwardRecentActivity t1469}
    07-25 14:10:56.175 1424-3115/? I/ActivityManager: 
        
    dispatchActivityResumed for activity 
        
    com.tencent.mobileqq/com.tencent.mobileqq.activity.ForwardRecentActivity uid 10136
    
    
    
    07-25 14:10:56.348 1424-1544/? I/ActivityManager: 
        
    
    
    Displayed com.tencent.mobileqq/.activity.ForwardRecentActivity: +193ms (total +263ms)

    根据上面信息,可以看出,微信文档,采用qq分享时,先是跳转到了JumpActivity  界面,然后跳转到了最近聊天,可以选择好友的列表。

    为了能看到qq实现获取分享文件的代码。进行反编译后,找到清单文件。

    参照qq清单文件。也在自己的项目中新建了JumpActivity 清单文件配置如下。

      <activity android:configChanges="locale|keyboardHidden|orientation"
                android:name="app.activity.JumpActivity"
                android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent">
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqq"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqapi"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="qqstory"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqmdpass"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqwpa"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="http"/>
                    <data android:host="clientui.3g.qq.com"/>
                    <data android:pathPrefix="/"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:host="qm.qq.com" android:scheme="http"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqopensdkapi"/>
                </intent-filter>
                <intent-filter android:label="@string/wx_share">
                    <action android:name="android.intent.action.SEND"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:mimeType="image/*"/>
                    <data android:mimeType="video/*"/>
                    <data android:mimeType="audio/*"/>
                    <data android:mimeType="application/*"/>
                    <data android:mimeType="text/plain"/>
                    <data android:mimeType="text/html"/>
                    <data android:mimeType="text/css"/>
                    <data android:mimeType="text/xml"/>
                    <data android:mimeType="text/csv"/>
                    <data android:mimeType="text/x-vcard"/>
                </intent-filter>
                <intent-filter android:label="@string/wx_share">
                    <action android:name="android.intent.action.SEND_MULTIPLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:mimeType="image/*"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqflyticket"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="wtloginmqq"/>
                </intent-filter>
                <intent-filter android:label="@string/wx_share">
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="file"/>
                    <data android:mimeType="image/*"/>
                    <data android:mimeType="video/*"/>
                    <data android:mimeType="audio/*"/>
                    <data android:mimeType="text/*"/>
                    <data android:mimeType="application/x-7z-compressed"/>
                    <data android:mimeType="application/msword"/>
                    <data android:mimeType="application/octet-stream"/>
                    <data android:mimeType="application/pdf"/>
                    <data android:mimeType="application/vnd.mophun.application"/>
                    <data android:mimeType="application/vnd.mpohun.certificate"/>
                    <data android:mimeType="application/vnd.ms-excel"/>
                    <data android:mimeType="application/vnd.ms-powerpoint"/>
                    <data android:mimeType="application/vnd.ms-project"/>
                    <data android:mimeType="application/x-autocad"/>
                    <data android:mimeType="application/x-gtar"/>
                    <data android:mimeType="application/x-gzip"/>
                    <data android:mimeType="application/x-msaccess"/>
                    <data android:mimeType="application/x-mscardfile"/>
                    <data android:mimeType="application/x-msclip"/>
                    <data android:mimeType="application/x-msmediaview"/>
                    <data android:mimeType="application/x-msmetafile"/>
                    <data android:mimeType="application/x-msmoney"/>
                    <data android:mimeType="application/x-mspublisher"/>
                    <data android:mimeType="application/x-msschedule"/>
                    <data android:mimeType="application/x-msterminal"/>
                    <data android:mimeType="application/x-ms-wmd"/>
                    <data android:mimeType="application/x-ms-wmz"/>
                    <data android:mimeType="application/x-mswrite"/>
                    <data android:mimeType="application/x-rar-compressed"/>
                    <data android:mimeType="application/x-shockwave-flash"/>
                    <data android:mimeType="application/x-tar"/>
                    <data android:mimeType="application/zip"/>
                    <data android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document"/>
                    <data android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.template"/>
                    <data android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.template"/>
                    <data android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.slideshow"/>
                    <data android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation"/>
                    <data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
                    <data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.template"/>
                </intent-filter>
                <intent-filter android:label="@string/wx_share">
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:mimeType="image/*"/>
                    <data android:mimeType="video/*"/>
                    <data android:mimeType="audio/*"/>
                    <data android:mimeType="text/*"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.SENDTO"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:host="qq" android:scheme="imto"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:host="tribe" android:scheme="mqqtribe"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:host="puzzle_verify_code" android:scheme="mqqverifycode"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqdevlock"/>
                </intent-filter>
                <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:scheme="qapp"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="com.tencent.mobileqq.msf.qqwifi.missions"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="com.tencent.mobileqq.msf.qqwifi.map"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="com.tencent.mobileqq.msf.qqwifi.redtouch"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="qqwifi"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="apollo"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.nfc.action.TECH_DISCOVERED"/>
                </intent-filter>
                <!--<meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/name"/>-->
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqconnect"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqzone"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqzonev2"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqzonev3"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqconferenceflyticket"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="kandianugc"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="mqqdatamigration"/>
                </intent-filter>
            </activity>

    参照qq,也将分享跳转的两个Activity界面,添加了    android:alwaysRetainTaskState="true"属性。

    再次测试,可以解决了微信打开文档后,----选择第三方应用打开---选择自己的项目,可以保证,先从JumpActivity跳转到--列表选择界面--选择好友---然后返回到最近聊天界面,其中列表选择界面不会onDestroy。

    通过反编译:根据qq清单文件也学到了好几点东西。

  • 相关阅读:
    HorizontalScrollView水平滚动控件
    编解码学习笔记(十):Ogg系列
    449A
    要点Java17 String
    struts2复习(五)拦截器总结
    java的wait和notifyAll使用方法
    centos网速特别慢的最佳解决的方法
    一年成为Emacs高手(像神一样使用编辑器)
    c++ 操作注冊表
    python 多线程编程
  • 原文地址:https://www.cnblogs.com/liyanli-mu640065/p/9367301.html
Copyright © 2011-2022 走看看