Bläddra i källkod

功能开发:处理从外部app启动相关activity的初始化逻辑

Sora 1 år sedan
förälder
incheckning
a19f269756

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

@@ -1099,6 +1099,18 @@
         <!--android:screenOrientation="portrait"-->
         <!--android:hardwareAccelerated="true"-->
         <!--android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />-->
+        <activity
+            android:name="com.baidu.idl.face.platform.ui.FaceDetectActivity"
+            android:hardwareAccelerated="true"
+            android:launchMode="singleTop"
+            android:screenOrientation="portrait"
+            android:theme="@style/Theme_NoTitle" />
+        <activity
+            android:name="com.baidu.idl.face.platform.ui.FaceLivenessActivity"
+            android:hardwareAccelerated="true"
+            android:launchMode="singleTop"
+            android:screenOrientation="portrait"
+            android:theme="@style/Theme_NoTitle" />
     </application>
 
 </manifest>

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/module/qrcode/QRCodeCaptureHelper.java

@@ -63,9 +63,9 @@ public class QRCodeCaptureHelper {
 
     private static void handleAction(Activity activity, Uri uri, String extra) {
         if (uri.toString().startsWith("sheep://liveness")) {
-            FaceSDKHelper.getInstance().goLivenessCheck(activity, Constant.INTENT_DETECT_FACE);
+            FaceSDKHelper.getInstance().goLivenessCheck(activity, Constant.INTENT_DETECT_FACE, extra);
         } else if (uri.toString().startsWith("sheep://facedetect")) {
-            FaceSDKHelper.getInstance().goFaceDetect(activity, Constant.INTENT_DETECT_FACE);
+            FaceSDKHelper.getInstance().goFaceDetect(activity, Constant.INTENT_DETECT_FACE, extra);
         }
     }
 

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/SplashAct.java

@@ -120,6 +120,7 @@ public class SplashAct extends BaseActivity {
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        Log.d("SheepApp", "SplashAct onCreate");
         hideSystemStatusBar();
         hideSystemNavBar();
         boolean agreeRule = (boolean) SharedPreferencesUtil.getData("agree_rule", false);
@@ -164,7 +165,7 @@ public class SplashAct extends BaseActivity {
     }
 
     void dialogAgree() {
-//        ((SheepApp) getApplication()).initOtherSDK();
+        ((SheepApp) getApplication()).initOtherSDK();
         if (!TextUtils.isEmpty(SpUtils.getToken(SheepApp.getInstance()))) {
             ApiJSONUtil.postUserDeviceLog();
         }

+ 13 - 5
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -130,7 +130,7 @@ public class SheepApp extends MultiDexApplication {
     private boolean gameFlag;
     private String wlan;
     private boolean needFace;
-    private boolean otherSDKInit = false;
+    public boolean otherSDKInit = false;
 
     public void clearGameAuthData() {
         gameId = null;
@@ -160,8 +160,8 @@ public class SheepApp extends MultiDexApplication {
 
     @Override
     public void onCreate() {
-//        configStrictMode();
         super.onCreate();
+        registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
         SharedPreferencesUtil.getInstance(this, "cache");
         mSheepApp = this;
         connectAddress = ConnectAddress.sheep.getDefaultConnectAddress();
@@ -172,6 +172,7 @@ public class SheepApp extends MultiDexApplication {
         ChannelContent.getInstance().initChannelContent(this);
         //要先同意隐私协议之后,才能去初始化SDK那些内容
         initUtils();
+//        initOtherSDK();
     }
 
 
@@ -370,9 +371,17 @@ public class SheepApp extends MultiDexApplication {
         }
     }
 
+    /**
+     * 初始化第三方的SDK,只能初始化一次。
+     */
     public void initOtherSDK() {
+        //SheepApp可以通过游戏打开,所以会执行初始化方法。
+        // 然后用户自己再点开小绵羊,就会进入SplashAct里面,SplashAct里同意了隐私协议之后,
+        // 会调用initOtherSDK方法。未避免两次初始化导致的crash,所以增加强制判断。
+        if (otherSDKInit) {
+            return;
+        }
         otherSDKInit = true;
-        registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
         //        小游戏
         MiniSDK.init(this, () -> Log.e("SNOW", "initComplete"));
         // 渠道是否需要使用互联账号作为自有体系登录游戏。
@@ -490,7 +499,6 @@ public class SheepApp extends MultiDexApplication {
         }
         x.Ext.init(this);
         x.Ext.setDebug(org.xutils.BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
-        initOtherSDK();
     }
 
     private IWXAPI wxApi;
@@ -660,7 +668,7 @@ public class SheepApp extends MultiDexApplication {
             if (!(activity instanceof SplashAct)) {
                 //如果不是启动activity,如果第三方的sdk没初始化,就要初始化第三方SDK
                 if (!otherSDKInit) {
-//                    initOtherSDK();
+                    initOtherSDK();
                 }
             }
             if (/*activity instanceof SplashAct || */activity instanceof LoginAct) {

+ 1 - 12
faceplatform-ui/src/main/AndroidManifest.xml

@@ -3,18 +3,7 @@
 
     <application android:label="@string/app_name" >
 
-        <activity
-            android:name="com.baidu.idl.face.platform.ui.FaceDetectActivity"
-            android:hardwareAccelerated="true"
-            android:launchMode="singleTop"
-            android:screenOrientation="portrait"
-            android:theme="@style/Theme_NoTitle" />
-        <activity
-            android:name="com.baidu.idl.face.platform.ui.FaceLivenessActivity"
-            android:hardwareAccelerated="true"
-            android:launchMode="singleTop"
-            android:screenOrientation="portrait"
-            android:theme="@style/Theme_NoTitle" />
+
     </application>
 
 </manifest>

+ 4 - 0
faceplatform-ui/src/main/java/com/baidu/idl/face/platform/ui/CameraActivity.java

@@ -20,9 +20,12 @@ import java.util.List;
 import java.util.Map;
 
 public class CameraActivity extends Activity {
+    protected String extra;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        extra = getIntent().getStringExtra("extra");
     }
 
     protected void handleBest(HashMap<String, ImageInfo> imageSrcMap) {
@@ -57,6 +60,7 @@ public class CameraActivity extends Activity {
         String facePath = saveBaseImage(bmpStr);
         Intent result = new Intent();
         result.putExtra("bestPath", facePath);
+        result.putExtra("extra", extra);
         setResult(RESULT_OK, result);
         finish();
     }

+ 6 - 4
faceplatform-ui/src/main/java/com/baidu/idl/face/platform/ui/utils/FaceSDKHelper.java

@@ -51,10 +51,10 @@ public class FaceSDKHelper {
     }
 
     public void goLivenessCheck(Activity activity) {
-        goLivenessCheck(activity, REQUEST_FACE_LIVENESS);
+        goLivenessCheck(activity, REQUEST_FACE_LIVENESS, null);
     }
 
-    public void goLivenessCheck(Activity activity, int requestCode) {
+    public void goLivenessCheck(Activity activity, int requestCode, String extra) {
         List<LivenessTypeEnum> arr = Arrays.asList(LivenessTypeEnum.Eye,
                 LivenessTypeEnum.HeadDown,
                 LivenessTypeEnum.HeadUp,
@@ -66,15 +66,17 @@ public class FaceSDKHelper {
         FaceConfig mFaceConfig = FaceSDKManager.getInstance().getFaceConfig();
         mFaceConfig.setLivenessTypeList(getRandoms(3, list));
         Intent in = new Intent(activity, FaceLivenessActivity.class);
+        in.putExtra("extra", extra);
         activity.startActivityForResult(in, requestCode);
     }
 
     public void goFaceDetect(Activity activity) {
-        goFaceDetect(activity,REQUEST_FACE_DETECT);
+        goFaceDetect(activity, REQUEST_FACE_DETECT, null);
     }
 
-    public void goFaceDetect(Activity activity, int requestCode) {
+    public void goFaceDetect(Activity activity, int requestCode, String extra) {
         Intent in = new Intent(activity, FaceDetectActivity.class);
+        in.putExtra("extra", extra);
         activity.startActivityForResult(in, requestCode);
     }