DESKTOP-SADJPBG\47462 5 سال پیش
والد
کامیت
86e20f72a2

BIN
.idea/caches/build_file_checksums.ser


BIN
.idea/caches/gradle_models.ser


+ 9 - 9
app/build.gradle

xqd xqd
@@ -8,8 +8,8 @@ android {
         applicationId "com.zhilin.patrol"
         minSdkVersion 16
         targetSdkVersion 26
-        versionCode 6
-        versionName "1.0.6"
+        versionCode 7
+        versionName "1.0.7"
         ndk {
 // 设置支持的SO库架构 注意如果是虚拟机使用的话需要吧x86加上去 否则无法运行的
             abiFilters 'armeabi'  //, ‘x86’, ‘armeabi-v7a’, ‘x86_64’, ‘arm64-v8a’}
@@ -67,11 +67,11 @@ dependencies {
     implementation files('libs/pinyin4j-2.5.0.jar')
     implementation 'com.squareup.okhttp3:okhttp:3.10.0'
     implementation 'com.contrarywind:Android-PickerView:4.1.9'
-
-//    //3D地图so及jar
-//    implementation 'com.amap.api:3dmap:latest.integration'
-//    //定位功能
-//    implementation 'com.amap.api:location:latest.integration'
-//    //搜索功能
-//    implementation 'com.amap.api:search:latest.integration'
+    //    //3D地图so及jar
+    //    implementation 'com.amap.api:3dmap:latest.integration'
+    //    //定位功能
+    //    implementation 'com.amap.api:location:latest.integration'
+    //    //搜索功能
+    //    implementation 'com.amap.api:search:latest.integration'
+    implementation files('libs/pgyer_sdk_3.0.10.jar')
 }

BIN
app/libs/pgyer_sdk_3.0.10.jar


+ 23 - 0
app/src/main/AndroidManifest.xml

xqd xqd
@@ -3,6 +3,11 @@
     package="com.zhilin.patrol">
 
 
+    <!-- 必选-->
+    <uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 允许程序录制音频 -->
+    <uses-permission android:name="android.permission.GET_TASKS"/>
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
+
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <!--允许程序读写手机状态和身份-->   <!--允许程序打开网络套接字-->
     <uses-permission android:name="android.permission.INTERNET" />
@@ -72,6 +77,24 @@
 
         <service android:name="com.amap.api.location.APSService" />
 
+        <provider
+            android:name="com.pgyersdk.PgyerProvider"
+            android:authorities="${applicationId}.com.pgyer.provider"
+            android:exported="false"/>
+        <meta-data
+            android:name="PGYER_APPID"
+            android:value="f2ba967b72c7e40c7bd77276bf0da1d4" >
+        </meta-data>
+        <!-- 适配AndroidQ, 打开文件,安装apk-->
+        <provider
+            android:name="android.support.v4.content.FileProvider"
+            android:authorities="com.zhilin.patrol.fileProvider"
+            android:exported="false"
+            android:grantUriPermissions="true">
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                android:resource="@xml/file_paths"/>
+        </provider>
 
         <activity
             android:name=".ui.activity.MainActivity"

+ 0 - 5
app/src/main/java/com/zhilin/patrol/tool/SPUtil.java

xqd
@@ -16,11 +16,6 @@ import java.util.Map;
 
 public class SPUtil {
 
-
-
-
-
-
     private static boolean isSpace(final String s) {
         if (s == null) return true;
         for (int i = 0, len = s.length(); i < len; ++i) {

+ 2 - 0
app/src/main/java/com/zhilin/patrol/ui/activity/LoginActivity.java

xqd xqd
@@ -95,6 +95,7 @@ public class LoginActivity extends BaseActivity {
         isContainNavi(false);
         setContentView(R.layout.activity_login);
 
+
         LoginEntity.InfoListBean infoList = (LoginEntity.InfoListBean) SPUtil.getShareObject(LoginActivity.this, SPUtil.SP_COMMON_CONFIG, "infoList");
         if (infoList!=null){//登录过直接去主页
             toMain(infoList);
@@ -435,6 +436,7 @@ public class LoginActivity extends BaseActivity {
         }
         return false;
     }
+
    /* @Override
     public void request() {
         String ipAddress = IpUtils.getIpAddress(this);

+ 98 - 0
app/src/main/java/com/zhilin/patrol/ui/activity/MainActivity.java

xqd xqd xqd
@@ -1,8 +1,11 @@
 package com.zhilin.patrol.ui.activity;
 
+import android.content.Context;
 import android.content.Intent;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.Environment;
+import android.support.v4.content.FileProvider;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
@@ -11,6 +14,10 @@ import android.widget.TextView;
 
 import com.cjj.MaterialRefreshLayout;
 import com.cjj.MaterialRefreshListener;
+import com.pgyersdk.update.DownloadFileListener;
+import com.pgyersdk.update.PgyUpdateManager;
+import com.pgyersdk.update.UpdateManagerListener;
+import com.pgyersdk.update.javabean.AppBean;
 import com.zhilin.patrol.R;
 import com.zhilin.patrol.bean.HomeEntity;
 import com.zhilin.patrol.bean.LoginEntity;
@@ -99,9 +106,100 @@ public class MainActivity extends BaseActivity {
         showLoadingView();
         mIsFirst = true;
         request();
+        checkUpdate();
     }
 
+    public void checkUpdate(){
+        /** 新版本 **/
+        new PgyUpdateManager.Builder()
+                .setForced(true)                //设置是否强制提示更新,非自定义回调更新接口此方法有用
+                .setUserCanRetry(false)         //失败后是否提示重新下载,非自定义下载 apk 回调此方法有用
+                .setDeleteHistroyApk(false)     // 检查更新前是否删除本地历史 Apk, 默认为true
+                .setUpdateManagerListener(new UpdateManagerListener() {
+                    @Override
+                    public void onNoUpdateAvailable() {
+                        //没有更新是回调此方法
+                        Log.d("pgyer", "there is no new version");
+                    }
+                    @Override
+                    public void onUpdateAvailable(final AppBean appBean) {
+                        //有更新回调此方法
+                        Log.d("pgyer", "there is new version can update"
+                                + "new versionCode is " + appBean.getVersionCode());
+                        //调用以下方法,DownloadFileListener 才有效;
+                        //如果完全使用自己的下载方法,不需要设置DownloadFileListener
+                        int a=2;
+                        new AlertDialog(MainActivity.this).builder()
+                                .setTitle(getString(R.string.tv_tishi))
+                                .setMsg("有新版本,是否更新?")
+                                .setPositiveButton("确定", new View.OnClickListener() {
+                                    @Override
+                                    public void onClick(View v) {
+                                        PgyUpdateManager.downLoadApk(appBean.getDownloadURL());
+                                    }
+                                }).setNegativeButton("取消", new View.OnClickListener() {
+                            @Override
+                            public void onClick(View view) {
+
+                            }
+                        }).show();
+
 
+                    }
+                    @Override
+                    public void checkUpdateFailed(Exception e) {
+                        //更新检测失败回调
+                        //更新拒绝(应用被下架,过期,不在安装有效期,下载次数用尽)以及无网络情况会调用此接口
+                        Log.e("pgyer", "check update failed ", e);
+                    }
+                })
+                //注意 :
+                //下载方法调用 PgyUpdateManager.downLoadApk(appBean.getDownloadURL()); 此回调才有效
+                //此方法是方便用户自己实现下载进度和状态的 UI 提供的回调
+                //想要使用蒲公英的默认下载进度的UI则不设置此方法
+                .setDownloadFileListener(new DownloadFileListener() {
+                    @Override
+                    public void downloadFailed() {
+                        //下载失败
+                        Log.e("pgyer", "download apk failed");
+                    }
+                    @Override
+                    public void downloadSuccessful(File file) {
+                        //   ***/storage/emulated/0/Android/data/com.zhilin.patrol/files/pgySdk/downloadApk/apk-3628010012122729412.apk
+                        Log.e("pgyer", "download apk success");
+                        // 使用蒲公英提供的安装方法提示用户 安装apk
+                        Log.i("installfile=","***"+file);
+//                        PgyUpdateManager.installApk(file);
+//                        installAPK(file);
+                        startInstall(MainActivity.this,file);
+//                        installAPKtow(MainActivity.this,file);
+                    }
+                    @Override
+                    public void onProgressUpdate(Integer... integers) {
+                        Log.e("pgyer", "update download apk progress" + integers);
+                    }})
+                .register();
+    }
+    public void startInstall(Context context, File file) {
+//            if (Build.VERSION.SDK_INT >= 29) {
+        Intent intent = new Intent(Intent.ACTION_VIEW);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        Uri apkUri = FileProvider.getUriForFile(context, "com.zhilin.patrol.fileProvider", file);
+        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
+        try {
+            context.startActivity(intent);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+//            } else {
+//                Uri uri = Uri.fromFile(file);
+//                Intent intent = new Intent(Intent.ACTION_VIEW);
+//                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+//                intent.setDataAndType(uri, "application/vnd.android.package-archive");
+//                startActivity(intent);
+//            }
+    }
     @Override
     public void request() {
         String ipAddress = IpUtils.getIpAddress(this);

+ 99 - 0
app/src/main/java/com/zhilin/patrol/ui/activity/RectifyMainActivity.java

xqd xqd xqd
@@ -1,8 +1,11 @@
 package com.zhilin.patrol.ui.activity;
 
+import android.content.Context;
 import android.content.Intent;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.Environment;
+import android.support.v4.content.FileProvider;
 import android.support.v7.app.AppCompatActivity;
 import android.text.TextUtils;
 import android.util.Log;
@@ -12,6 +15,10 @@ import android.widget.TextView;
 
 import com.cjj.MaterialRefreshLayout;
 import com.cjj.MaterialRefreshListener;
+import com.pgyersdk.update.DownloadFileListener;
+import com.pgyersdk.update.PgyUpdateManager;
+import com.pgyersdk.update.UpdateManagerListener;
+import com.pgyersdk.update.javabean.AppBean;
 import com.zhilin.patrol.R;
 import com.zhilin.patrol.bean.HomeEntity;
 import com.zhilin.patrol.bean.LoginEntity;
@@ -63,8 +70,100 @@ public class RectifyMainActivity extends AppCompatActivity {
         mInfoListBean = (LoginEntity.InfoListBean) getIntent().getSerializableExtra("infoList");
         mUserInfo = mInfoListBean.getUserInfo();
         init();
+        checkUpdate();
     }
 
+    public void checkUpdate(){
+        /** 新版本 **/
+        new PgyUpdateManager.Builder()
+                .setForced(true)                //设置是否强制提示更新,非自定义回调更新接口此方法有用
+                .setUserCanRetry(false)         //失败后是否提示重新下载,非自定义下载 apk 回调此方法有用
+                .setDeleteHistroyApk(false)     // 检查更新前是否删除本地历史 Apk, 默认为true
+                .setUpdateManagerListener(new UpdateManagerListener() {
+                    @Override
+                    public void onNoUpdateAvailable() {
+                        //没有更新是回调此方法
+                        Log.d("pgyer", "there is no new version");
+                    }
+                    @Override
+                    public void onUpdateAvailable(final AppBean appBean) {
+                        //有更新回调此方法
+                        Log.d("pgyer", "there is new version can update"
+                                + "new versionCode is " + appBean.getVersionCode());
+                        //调用以下方法,DownloadFileListener 才有效;
+                        //如果完全使用自己的下载方法,不需要设置DownloadFileListener
+                        int a=2;
+                        new AlertDialog(RectifyMainActivity.this).builder()
+                                .setTitle(getString(R.string.tv_tishi))
+                                .setMsg("有新版本,是否更新?")
+                                .setPositiveButton("确定", new View.OnClickListener() {
+                                    @Override
+                                    public void onClick(View v) {
+                                        PgyUpdateManager.downLoadApk(appBean.getDownloadURL());
+                                    }
+                                }).setNegativeButton("取消", new View.OnClickListener() {
+                            @Override
+                            public void onClick(View view) {
+
+                            }
+                        }).show();
+
+
+                    }
+                    @Override
+                    public void checkUpdateFailed(Exception e) {
+                        //更新检测失败回调
+                        //更新拒绝(应用被下架,过期,不在安装有效期,下载次数用尽)以及无网络情况会调用此接口
+                        Log.e("pgyer", "check update failed ", e);
+                    }
+                })
+                //注意 :
+                //下载方法调用 PgyUpdateManager.downLoadApk(appBean.getDownloadURL()); 此回调才有效
+                //此方法是方便用户自己实现下载进度和状态的 UI 提供的回调
+                //想要使用蒲公英的默认下载进度的UI则不设置此方法
+                .setDownloadFileListener(new DownloadFileListener() {
+                    @Override
+                    public void downloadFailed() {
+                        //下载失败
+                        Log.e("pgyer", "download apk failed");
+                    }
+                    @Override
+                    public void downloadSuccessful(File file) {
+                        //   ***/storage/emulated/0/Android/data/com.zhilin.patrol/files/pgySdk/downloadApk/apk-3628010012122729412.apk
+                        Log.e("pgyer", "download apk success");
+                        // 使用蒲公英提供的安装方法提示用户 安装apk
+                        Log.i("installfile=","***"+file);
+//                        PgyUpdateManager.installApk(file);
+//                        installAPK(file);
+                        startInstall(RectifyMainActivity.this,file);
+//                        installAPKtow(MainActivity.this,file);
+                    }
+                    @Override
+                    public void onProgressUpdate(Integer... integers) {
+                        Log.e("pgyer", "update download apk progress" + integers);
+                    }})
+                .register();
+    }
+    public void startInstall(Context context, File file) {
+//            if (Build.VERSION.SDK_INT >= 29) {
+        Intent intent = new Intent(Intent.ACTION_VIEW);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        Uri apkUri = FileProvider.getUriForFile(context, "com.zhilin.patrol.fileProvider", file);
+        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
+        try {
+            context.startActivity(intent);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+//            } else {
+//                Uri uri = Uri.fromFile(file);
+//                Intent intent = new Intent(Intent.ACTION_VIEW);
+//                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+//                intent.setDataAndType(uri, "application/vnd.android.package-archive");
+//                startActivity(intent);
+//            }
+    }
     private void init() {
         if (mUserInfo != null) {
             mUserTv.setText(mUserInfo.getUserName());

+ 5 - 0
app/src/main/res/xml/file_paths.xml

xqd
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<paths xmlns:android="http://schemas.android.com/apk/res/android">
+    <external-path name="Download"  path="."/>
+    <!-- 所有路径下 -->
+</paths>