美文网首页
微信 apk.1 无法安装问题

微信 apk.1 无法安装问题

作者: ZDCrazy | 来源:发表于2018-11-23 21:17 被阅读34次

怕什么真理无穷,进一寸自有进一寸的欢喜 -- 胡适

  最近通过微信给测试同学发送测试包的过程中,发现了一个问题,微信会自动给每一个apk文件加上.1后缀,导致测试无法直接安装。提示无法找到打开应用的文件,闲暇之余,简单写了个插件,轻松实现apk.1直接安装。效果如下:

auto_install_plugin.gif

  要实现上述的功能,其实特别简单,只需要自己可以构建一个可以自动识别.1后缀的 Intent 就可以了,首先需要为.1注册一个相对应的 intent 在 mainfiest 文件中,代码如下:

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <intent-filter>

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

                <data android:mimeType="*/*"/>
                <data android:scheme="file"/>
                <data android:mimeType="text/plain" />

                <data android:host="*" />
                <data android:pathPattern=".*" />
                <action android:name="android.intent.action.VIEW" />

            </intent-filter>

   通过对 mimeType 的设定,保证该 Intent 可以解析.1后缀的文件,然后将 APK 的安装逻辑放在接收到 Intent 的地方处理即可,收到 Intent 对应消息以后,安装代码处理逻辑如下:

     // 解析 Intent
    private void handleApkIntent() {
        Intent intent = getIntent();
        if (intent != null) {
            Uri uri = intent.getData();
            if (uri != null) {
                // 拿到 apk.1 安装路径
                String path = uri.getPath();
                if (!TextUtils.isEmpty(path)) {
                    tryUpdate(path);
                }
            }
        }
    }

   // 通过 Intent 打开系统安装弹窗界面
    private void tryUpdate(String path) {
        try {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive");
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        } catch (Exception e) {

        }
    }

   代码处理逻辑也比较简单,首先解析 Intent ,拿到 Apk 的安装路径,然后通过 系统安装 Intent ,进行安装即可。至此,自动安装逻辑就已经全部处理完毕。
   将上述写好的 APK 安装至自己手机,后续微信收到 APK 后,就可以自行进行安装了。

相关文章

  • 微信 apk.1 无法安装问题

    怕什么真理无穷,进一寸自有进一寸的欢喜 ...

  • 轻松"治"好了微信祖传老毛病!

    相信不少小伙伴都遇到过这样一个问题:在微信里收到好友发来的apk文件会微信会自动改名为apk.1,改名后的文件由于...

  • Mac电脑上微信双开

    记录:Mac上无法安装多个微信,即使安装的老版本也无法双开运行,如何双开运行只有靠终端执行命令操作,找到微信安装目...

  • 微信严重bug

    微信无法解封,无法发消息,无法付款,无人解决此类问题

  • IOS 微信授权登录

    没有添加白名单的话只能用短信登录 Scheme白名单问题(无法判断手机是否安装微信等) -canOpenURL: ...

  • Mac chrome浏览器 微信支付商户安全控件无法启用

    用mac chrome浏览器登录微信支付商户平台,下载并安装安全控件后,无法启用,重复提示安装。重复安装后同样无法...

  • manjaro kde 遇到的一些问题解决

    应用中无法输入中文 通过 yay 安装好微信后无法输入中文, 问题的表现是中文输入法比如搜狗拼音或谷歌拼音输入法的...

  • 微信SDK集成

    微信提供的服务 一.程序中集成微信支付功能 会跳转到微信中完成支付,也就是说没安装微信客户端就无法使用支付功能。切...

  • appstore上架审核坑

    1、微信登录问题 如果你用微信登录,但是你的手机里面没有安装微信,用的这个微信模块是不能弹出 网页来让你登录的,所...

  • 神剑若水哥:[WXApi isWXAppInstalled] 和

    问题:即使安装微信,如果一直返回NO, 问题说明:isWXAppInstalled 和canOpenURL 其实是...

网友评论

      本文标题:微信 apk.1 无法安装问题

      本文链接:https://www.haomeiwen.com/subject/jcxjqqtx.html