美文网首页
微信 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 无法安装问题

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