Sfoglia il codice sorgente

支持deeplink方式启动小绵羊

zengjiebin 7 anni fa
parent
commit
5b3b9b04a1

+ 36 - 6
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -964,8 +964,14 @@ public class Jump2View {
             return;
         }
         //检查url是否是http开头并添加
-        if (!url.startsWith("http") && !url.contains("://")) {
-            url = "http://" + url;
+        if (!url.startsWith("http")) {
+            if(url.contains("://")){
+                if(tryGotoDeepLink(url)){
+                    return;
+                }
+            } else {
+                url = "http://" + url;
+            }
         }
         Intent intent = new Intent(context, ActWebX5.class);
         intent.putExtra(IJumpWeb.KEY_URL, url);
@@ -973,7 +979,25 @@ public class Jump2View {
         intent.putExtra(IJumpWeb.KEY_NEEDJSINTERACT, true);
         context.startActivity(intent);
     }
-
+    /**
+     * 尝试通过深度链接跳转应用
+     * @param url
+     */
+    public boolean tryGotoDeepLink(String url) {
+        Activity activity = SheepApp.getInstance().getCurrentActivity();
+        try {
+            String deepLink = url.trim();
+            Intent intent = Intent.parseUri(deepLink, Intent.URI_INTENT_SCHEME);
+            intent.setComponent(null);
+            activity.startActivity(intent);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            if (TestUtil.isTest())
+                G.showToast(e.getMessage());
+            return false;
+        }
+    }
     /**
      * 跳到web页面
      *
@@ -988,8 +1012,14 @@ public class Jump2View {
             return;
         }
         //检查url是否是http开头并添加
-        if (!url.startsWith("http") && !url.contains("://")) {
-            url = "http://" + url;
+        if (!url.startsWith("http")) {
+            if(url.contains("://")){
+                if(tryGotoDeepLink(url)){
+                    return;
+                }
+            } else {
+                url = "http://" + url;
+            }
         }
         Intent intent = new Intent(context, ActWebX5.class);
         intent.putExtra(IJumpWeb.KEY_URL, url);
@@ -1966,7 +1996,6 @@ public class Jump2View {
             Intent intent = Intent.parseUri(deepLink, Intent.URI_INTENT_SCHEME);
             intent.setComponent(null);
             activity.startActivity(intent);
-            CommonUtil.getInstance().awakenDetail(entity);
         } catch (Exception e) {
             e.printStackTrace();
             if (TestUtil.isTest())
@@ -1974,6 +2003,7 @@ public class Jump2View {
             else
                 G.showToast(activity.getString(R.string.not_install, entity.getApp_name()));
         }
+        CommonUtil.getInstance().awakenDetail(entity);
     }
 
     /**

+ 1 - 6
app/src/main/java/com/sheep/gamegroup/view/activity/ActBindMobileRegister.java

@@ -181,12 +181,7 @@ public class ActBindMobileRegister extends BaseActivity {
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                     @Override
                     public void onNext(BaseMessage baseMessage) {
-                        LoginEntity loginEty = null;
-                        try {
-                            loginEty = JSONObject.parseObject(JSONObject.toJSONString(baseMessage.getData()), LoginEntity.class);
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
+                        LoginEntity loginEty = baseMessage.getData(LoginEntity.class);
                         if (loginEty != null) {
                             SpUtils.saveToken(activity, loginEty.getToken());
                             DataUtil.getInstance().initUserEntity(loginEty.getUser());

+ 116 - 19
app/src/main/java/com/sheep/gamegroup/view/activity/MiddleSchemeAct.java

@@ -5,12 +5,24 @@ import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
+import android.text.TextUtils;
 
+import com.alibaba.fastjson.JSONObject;
+import com.kfzs.cfyl.share_library.util.Constant;
+import com.kfzs.duanduan.utils.ApkUtils;
+import com.sheep.gamegroup.model.api.BaseMessageConverter;
+import com.sheep.gamegroup.model.entity.HomeListEntity;
+import com.sheep.gamegroup.model.entity.SlideshowEty;
 import com.sheep.gamegroup.util.ActionUtil;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.bean.UserCenterModule;
 import com.sheep.jiuyan.samllsheep.utils.G;
+import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
+
+import java.util.ArrayList;
 
 /**
  * Created by realicing on 2018/5/10.
@@ -37,12 +49,85 @@ public class MiddleSchemeAct extends Activity {
         switch (action) {
             case Intent.ACTION_VIEW:
                 Uri uri = intent.getData();
-                String game_id = "";
                 if (uri != null) {
                     // 完整的url信息
                     if (TestUtil.isTest())
                         G.showToast(uri.toString());
-                    game_id = uri.getQueryParameter("game_id");
+                    parseUri(uri);
+                }
+                finish();
+                break;
+        }
+    }
+
+    private void parseUri(Uri uri) {
+        String type = uri.getQueryParameter("type");
+        if(type == null){
+//            尝试获取game_id
+            //sheep://small.kfzs.com/xmy?game_id=1385&code=976873
+            tryGoSplashAct(uri);
+            return;
+        }
+        //尝试解密数据
+        String json = BaseMessageConverter.decrypt(uri.getQueryParameter("data"));
+        switch (type){
+            default://尝试获取game_id
+                tryGoSplashAct(uri);
+                break;
+            //sheep://small.kfzs.com/sheep?type=jhl&data={"Jump":"1"}
+            case "jump_home_list"://跳转homeList
+            case "jhl":
+                try {
+                    HomeListEntity item = JSONObject.parseObject(json, HomeListEntity.class);
+                    CommonUtil.getInstance().goNative(this, item, "view");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    if(TestUtil.isTest() && TextUtils.isEmpty(e.getMessage()))
+                        G.showToast(e.getMessage());
+                }
+                break;
+            //sheep://small.kfzs.com/sheep?type=jum&data={"jump":1}
+            case "jump_user_module"://跳转个人中心列表功能模块
+            case "jum":
+                try {
+                    UserCenterModule item = JSONObject.parseObject(json, UserCenterModule.class);
+                    CommonUtil.getInstance().goNative(this, item, "view");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    if(TestUtil.isTest() && TextUtils.isEmpty(e.getMessage()))
+                        G.showToast(e.getMessage());
+                }
+                break;
+            //sheep://small.kfzs.com/sheep?type=jss&data={"Type":1}
+            case "jump_slide_show"://跳转banner(主页banner或者游戏banner)
+            case "jss":
+                try {
+                    SlideshowEty item = JSONObject.parseObject(json, SlideshowEty.class);
+                    CommonUtil.getInstance().clickBanner(this, item);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    if(TestUtil.isTest() && TextUtils.isEmpty(e.getMessage()))
+                        G.showToast(e.getMessage());
+                }
+                break;
+            //sheep://small.kfzs.com/sheep?type=run_app&packageName=com.realicing.android.upgrade.sheep&className=com.realicing.android.upgrade.sheep.MainActivity
+            case "run_app":
+            case "run":
+                String packageName = uri.getQueryParameter("packageName");
+                String className = uri.getQueryParameter("className");
+                boolean packageNameIsEmpty = TextUtils.isEmpty(packageName);
+                boolean classNameIsEmpty = TextUtils.isEmpty(className);
+                if(packageNameIsEmpty && classNameIsEmpty){
+                    tryGoSplashAct(uri);
+                } else if(packageNameIsEmpty){
+                    runApp(getPackageName(), className);
+                } else if(classNameIsEmpty) {
+                    PackageUtil.startApp(this, packageName);
+                } else {
+                    runApp(packageName, className);
+                }
+                break;
+        }
 //                    LogUtil.println("ActMain", "checkScheme","url: " + url);
 //                    // scheme部分
 //                    String scheme = uri.getScheme();
@@ -52,7 +137,7 @@ public class MiddleSchemeAct extends Activity {
 //                    LogUtil.println("ActMain", "checkScheme","host: " + host);
 //                    //port部分
 //                    int port = uri.getPort();
-//                    LogUtil.println("ActMain", "checkScheme","host: " + port);
+//                    LogUtil.println("ActMain", "checkScheme","port: " + port);
 //                    // 访问路劲
 //                    String path = uri.getPath();
 //                    LogUtil.println("ActMain", "checkScheme","path: " + path);
@@ -67,25 +152,37 @@ public class MiddleSchemeAct extends Activity {
 //                    if(TextUtils.equals(code, "0")){
 //                        finish();
 //                    }
-                    /**
-                     * sheep://small.kfzs.com/xmy?game_id=1385&code=976873
-                     * ActMain checkScheme url: sheep://kfzs:8888/xmy?code=976873
-                     * ActMain checkScheme scheme: sheep
-                     * ActMain checkScheme host: kfzs
-                     * ActMain checkScheme host: 8888
-                     * ActMain checkScheme path: /xmy
-                     * ActMain checkScheme pathSegments: ["xmy"]
-                     * ActMain checkScheme query: code=976873
-                     * ActMain checkScheme code: 976873
-                     */
-                }
-                ActionUtil.getInstance().addNextAction(SHOW_DIALOG_GAME_OR_GIFT_TASK, game_id);
-                Jump2View.getInstance().newTaskTopStartAct(this, SplashAct.class, null);
-                finish();
-                break;
+    }
+    private void runApp(String packageName, String className){
+        try {
+            Intent intent = new Intent();
+            intent.setClassName(packageName, className);
+            startActivity(intent);
+        } catch (Exception e) {
+            e.printStackTrace();
+            if(TestUtil.isTest() && TextUtils.isEmpty(e.getMessage()))
+                G.showToast(e.getMessage());
         }
     }
 
+    /**
+     * 进入主页,可以设置 game_id 用于展示会长推广弹出框
+     * sheep://small.kfzs.com/xmy?game_id=1385&code=976873
+     * ActMain checkScheme scheme: sheep
+     * ActMain checkScheme host: small.kfzs.com
+     * ActMain checkScheme path: /xmy
+     * ActMain checkScheme pathSegments: ["xmy"]
+     * ActMain checkScheme query: code=976873
+     * ActMain checkScheme code: 976873
+     */
+    private void tryGoSplashAct(Uri uri) {
+        String game_id = uri.getQueryParameter("game_id");
+        if(!TextUtils.isEmpty(game_id))//有game_id时设置game_id的回调到主页,用于展示会长推广弹出框
+            ActionUtil.getInstance().addNextAction(SHOW_DIALOG_GAME_OR_GIFT_TASK, game_id);
+        Jump2View.getInstance().newTaskTopStartAct(this, SplashAct.class, null);
+
+    }
+
     //展示会长推广弹出框的key
     public static final String SHOW_DIALOG_GAME_OR_GIFT_TASK = "show_dialog_game_or_gift_task";
 }

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtRouser.java

@@ -234,10 +234,10 @@ public class FgtRouser extends BaseFragment {
 
                             intent.setComponent(null);
                             startActivity(intent);
-                            CommonUtil.getInstance().awakenDetail(item);
                         } catch (Exception e) {
                             e.printStackTrace();
                         }
+                        CommonUtil.getInstance().awakenDetail(item);
                     }
                 });
             }

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtWatchFocus.java

@@ -163,7 +163,6 @@ public class FgtWatchFocus extends BaseListFragment5<RouserArticlesEntity> {
                             Intent intent = Intent.parseUri(deepLink, Intent.URI_INTENT_SCHEME);
                             intent.setComponent(null);
                             startActivity(intent);
-                            CommonUtil.getInstance().awakenDetail(item);
                         } catch (Exception e) {
                             e.printStackTrace();
                             if(TestUtil.isTest())
@@ -171,6 +170,7 @@ public class FgtWatchFocus extends BaseListFragment5<RouserArticlesEntity> {
                             else
                                 G.showToast(activity.getString(R.string.not_install, item.getApp_name()));
                         }
+                        CommonUtil.getInstance().awakenDetail(item);
                     }
                 });
             }