diff --git a/.gitignore b/.gitignore index 529e325cff..054c647121 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ /local.properties .DS_Store /build -/captures \ No newline at end of file +/captures +/PushSDK/build \ No newline at end of file diff --git a/app/src/main/java/com/gh/base/AppController.java b/app/src/main/java/com/gh/base/AppController.java index 0f33570c0f..b0d13cc26a 100644 --- a/app/src/main/java/com/gh/base/AppController.java +++ b/app/src/main/java/com/gh/base/AppController.java @@ -17,8 +17,6 @@ import com.gh.common.util.Utils; import com.umeng.message.IUmengRegisterCallback; import com.umeng.message.PushAgent; import com.umeng.message.UTrack; -import com.umeng.message.UmengNotificationClickHandler; -import com.umeng.message.entity.UMessage; import com.xiaomi.channel.commonutils.logger.LoggerInterface; import com.xiaomi.mipush.sdk.Logger; import com.xiaomi.mipush.sdk.MiPushClient; @@ -109,17 +107,8 @@ public class AppController extends Application { } }); - //推送数据处理 - UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() { - - //友盟 后续消息处理事件 - @Override - public void launchApp(Context context, UMessage uMessage) { - super.launchApp(context, uMessage); - String content = uMessage.extra.get("data"); //TODO 推送的数据 - } - }; - mPushAgent.setNotificationClickHandler(notificationClickHandler); + // 友盟推送数据处理 + mPushAgent.setNotificationClickHandler(new GHUmengNotificationClickHandler()); } diff --git a/app/src/main/java/com/gh/base/GHPushMessageReceiver.java b/app/src/main/java/com/gh/base/GHPushMessageReceiver.java index ed0bf2ddf0..ce0c71c643 100644 --- a/app/src/main/java/com/gh/base/GHPushMessageReceiver.java +++ b/app/src/main/java/com/gh/base/GHPushMessageReceiver.java @@ -9,17 +9,21 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.graphics.BitmapFactory; import android.os.Build; +import android.os.Bundle; import android.support.v4.app.NotificationCompat; import android.support.v4.util.ArrayMap; import android.text.TextUtils; import android.util.Log; import android.widget.RemoteViews; +import com.gh.common.util.ClassUtils; import com.gh.common.util.FileUtils; import com.gh.common.util.PackageUtils; +import com.gh.common.util.RunningUtils; import com.gh.common.util.TokenUtils; import com.gh.common.util.Utils; import com.gh.gamecenter.R; +import com.gh.gamecenter.SplashScreenActivity; import com.xiaomi.mipush.sdk.ErrorCode; import com.xiaomi.mipush.sdk.MiPushClient; import com.xiaomi.mipush.sdk.MiPushCommandMessage; @@ -242,10 +246,54 @@ public class GHPushMessageReceiver extends PushMessageReceiver { } @Override - public void onNotificationMessageClicked(Context context, - MiPushMessage message) { - Log.v(AppController.TAG, "onNotificationMessageClicked is called. " - + message.toString()); + public void onNotificationMessageClicked(Context context, MiPushMessage message) { + Log.v(AppController.TAG, "onNotificationMessageClicked is called. " + message.toString()); + + String content = message.getContent(); + + try { + JSONObject response = new JSONObject(content); + Bundle bundle = new Bundle(); + bundle.putString("entrance", "(小米推送)"); + String type = response.getString("type"); + if ("article".equals(type)) { + bundle.putString("to", "NewsDetailActivity"); + bundle.putString("newsId", response.getString("target")); + } else if ("game".equals(type)) { + bundle.putString("to", "GameDetailActivity"); + bundle.putString("gameId", response.getString("target")); + } else if ("column".equals(type)) { + bundle.putString("to", "SubjectActivity"); + bundle.putString("id", response.getString("target")); + } else if ("web".equals(type)) { + bundle.putString("to", "WebActivity"); + bundle.putString("url", response.getString("target")); + } + if (RunningUtils.isRunning(context)) { + // 应用正在运行,前台或后台 + String to = bundle.getString("to"); + if (!TextUtils.isEmpty(to)) { + Class clazz = ClassUtils.forName(to); + if (clazz != null) { + Intent intent1 = new Intent(context, clazz); + intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent1.putExtra("data", bundle); + context.startActivity(intent1); + } + } + } else { + // 应用未在运行 + Intent intent1 = new Intent(context, SplashScreenActivity.class); + intent1.setAction(Intent.ACTION_MAIN); + intent1.addCategory(Intent.CATEGORY_LAUNCHER); + intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent1.putExtra("data", bundle); + context.startActivity(intent1); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } @Override diff --git a/app/src/main/java/com/gh/base/GHUmengNotificationClickHandler.java b/app/src/main/java/com/gh/base/GHUmengNotificationClickHandler.java new file mode 100644 index 0000000000..72834c8be9 --- /dev/null +++ b/app/src/main/java/com/gh/base/GHUmengNotificationClickHandler.java @@ -0,0 +1,71 @@ +package com.gh.base; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.text.TextUtils; + +import com.gh.common.util.ClassUtils; +import com.gh.common.util.RunningUtils; +import com.gh.gamecenter.SplashScreenActivity; +import com.umeng.message.UmengNotificationClickHandler; +import com.umeng.message.entity.UMessage; + +import org.json.JSONException; +import org.json.JSONObject; + + +public class GHUmengNotificationClickHandler extends UmengNotificationClickHandler { + + @Override + public void launchApp(Context context, UMessage uMessage) { + super.launchApp(context, uMessage); + + String content = uMessage.extra.get("data"); + + try { + JSONObject response = new JSONObject(content); + Bundle bundle = new Bundle(); + bundle.putString("entrance", "(友盟推送)"); + String type = response.getString("type"); + if ("article".equals(type)) { + bundle.putString("to", "NewsDetailActivity"); + bundle.putString("newsId", response.getString("target")); + } else if ("game".equals(type)) { + bundle.putString("to", "GameDetailActivity"); + bundle.putString("gameId", response.getString("target")); + } else if ("column".equals(type)) { + bundle.putString("to", "SubjectActivity"); + bundle.putString("id", response.getString("target")); + } else if ("web".equals(type)) { + bundle.putString("to", "WebActivity"); + bundle.putString("url", response.getString("target")); + } + if (RunningUtils.isRunning(context)) { + // 应用正在运行,前台或后台 + String to = bundle.getString("to"); + if (!TextUtils.isEmpty(to)) { + Class clazz = ClassUtils.forName(to); + if (clazz != null) { + Intent intent1 = new Intent(context, clazz); + intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent1.putExtra("data", bundle); + context.startActivity(intent1); + } + } + } else { + // 应用未在运行 + Intent intent1 = new Intent(context, SplashScreenActivity.class); + intent1.setAction(Intent.ACTION_MAIN); + intent1.addCategory(Intent.CATEGORY_LAUNCHER); + intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent1.putExtra("data", bundle); + context.startActivity(intent1); + } + } catch (JSONException e) { + e.printStackTrace(); + } + + } + +} diff --git a/app/src/main/java/com/gh/common/util/ClassUtils.java b/app/src/main/java/com/gh/common/util/ClassUtils.java new file mode 100644 index 0000000000..52bfb0aaf8 --- /dev/null +++ b/app/src/main/java/com/gh/common/util/ClassUtils.java @@ -0,0 +1,20 @@ +package com.gh.common.util; + + +public class ClassUtils { + + public static Class forName(String name) { + if ("NewsActivity".equals(name)) { + name = "NewsDetailActivity"; + } else if ("GameDetailsActivity".equals(name)) { + name = "GameDetailActivity"; + } + try { + return Class.forName("com.gh.gamecenter." + name); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/app/src/main/java/com/gh/common/util/NewsUtils.java b/app/src/main/java/com/gh/common/util/NewsUtils.java index 27985e018a..464d6ac9c4 100644 --- a/app/src/main/java/com/gh/common/util/NewsUtils.java +++ b/app/src/main/java/com/gh/common/util/NewsUtils.java @@ -44,7 +44,7 @@ public class NewsUtils { /** * 启动新闻详情页面 */ - public static void startNewsActivity(Context context, NewsEntity newsEntity, String entrance) { + public static void startNewsDetailActivity(Context context, NewsEntity newsEntity, String entrance) { Intent intent = new Intent(context, NewsDetailActivity.class); intent.putExtra("id", newsEntity.getId()); intent.putExtra("title", newsEntity.getTitle()); diff --git a/app/src/main/java/com/gh/common/view/CardLinearLayout.java b/app/src/main/java/com/gh/common/view/CardLinearLayout.java index 8a5b94ae7e..bec3b3a278 100644 --- a/app/src/main/java/com/gh/common/view/CardLinearLayout.java +++ b/app/src/main/java/com/gh/common/view/CardLinearLayout.java @@ -7,7 +7,6 @@ import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.LinearLayout; -import com.gh.common.util.Utils; import com.gh.gamecenter.R; diff --git a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java index c63f36c145..ff46c9e99f 100644 --- a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java @@ -10,7 +10,6 @@ import android.widget.RelativeLayout; import com.gh.base.BaseActivity; import com.gh.common.util.ConcernUtils; -import com.gh.common.util.TokenUtils; import com.gh.common.util.Utils; import com.gh.common.view.Concern_LinearLayout; import com.gh.gamecenter.adapter.ConcernAdapter; diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 8cc85c2973..33336b5f1e 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -27,6 +27,7 @@ import android.widget.TextView; import com.gh.base.BaseFragmentActivity; import com.gh.common.constant.Config; +import com.gh.common.util.ClassUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataLogUtils; import com.gh.common.util.DataUtils; @@ -43,7 +44,6 @@ import com.gh.download.DataWatcher; import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; -import com.gh.gamecenter.db.GiftDao; import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.db.info.GameInfo; import com.gh.gamecenter.entity.ApkEntity; @@ -403,6 +403,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene handler.postDelayed(skipRun, 500); Log.e("TD_CHANNEL_ID", (String) PackageUtils.getMetaData(this, getPackageName(), "TD_CHANNEL_ID")); + Log.e("device", TokenUtils.getDeviceId(this)); } private void updateUserGhzs() { @@ -871,7 +872,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene isSkipped = true; String to = getIntent().getStringExtra("to"); if(!TextUtils.isEmpty(to)){ - Class clazz = intentClass(to); + Class clazz = ClassUtils.forName(to); if (clazz != null) { Intent skipIntent = new Intent(MainActivity.this, clazz); @@ -895,20 +896,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } }; - private Class intentClass(String to) { - if ("NewsActivity".equals(to)) { - to = "NewsDetailActivity"; - } else if ("GameDetailsActivity".equals(to)) { - to = "GameDetailActivity"; - } - try { - return Class.forName("com.gh.gamecenter." + to); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - return null; - } - private void getSearchHints() { RetrofitManager.getApi().getSearchHints() .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java index 498c3fa0c3..81badb762e 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java @@ -275,7 +275,7 @@ public class NewsSearchActivity extends BaseActivity { // 统计阅读量 NewsUtils.statNewsViews(newsEntity.getId()); - NewsUtils.startNewsActivity(NewsSearchActivity.this, newsEntity, entrance + "+(游戏新闻搜索)"); + NewsUtils.startNewsDetailActivity(NewsSearchActivity.this, newsEntity, entrance + "+(游戏新闻搜索)"); } }); }else if (holder instanceof FooterViewHolder){ diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index fe88fad53c..a2ab422031 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -33,8 +33,6 @@ import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.FilterManager; import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.RetrofitManager; -import com.xiaomi.mipush.sdk.MiPushMessage; -import com.xiaomi.mipush.sdk.PushMessageHelper; import org.json.JSONException; import org.json.JSONObject; @@ -66,12 +64,6 @@ public class SplashScreenActivity extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - //小米推送 打开app处理 - MiPushMessage miPushMessage = (MiPushMessage) getIntent().getSerializableExtra(PushMessageHelper.KEY_MESSAGE); - if (miPushMessage != null) { - String content = miPushMessage.getContent(); //TODO 推送的数据 - } - // 处理助手已经在后台运行导致的再次启动助手 if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) { finish(); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java index f18cbe4443..4a6526d0f3 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java @@ -210,7 +210,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter { // 统计阅读量 NewsUtils.statNewsViews(newsEntity.getId()); - NewsUtils.startNewsActivity(context, newsEntity, entrance + "+(游戏新闻详情:" + newsType + ")"); + NewsUtils.startNewsDetailActivity(context, newsEntity, entrance + "+(游戏新闻详情:" + newsType + ")"); } }); } else if (holder instanceof NewsFooterViewHolder){ diff --git a/app/src/main/java/com/gh/gamecenter/adapter/StrategyAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/StrategyAdapter.java index e5682c457b..969b65f1f7 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/StrategyAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/StrategyAdapter.java @@ -188,7 +188,7 @@ public class StrategyAdapter extends RecyclerView.Adapter clazz = intentClass(to); + Class clazz = ClassUtils.forName(to); if (clazz != null) { Intent intent1 = new Intent(context, clazz); intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -43,18 +44,4 @@ public class ActivitySkipReceiver extends BroadcastReceiver { } } - private Class intentClass(String to) { - if ("NewsActivity".equals(to)) { - to = "NewsDetailActivity"; - } else if ("GameDetailsActivity".equals(to)) { - to = "GameDetailActivity"; - } - try { - return Class.forName("com.gh.gamecenter." + to); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - return null; - } - } diff --git a/app/src/main/res/layout/gamedetail_item_gift.xml b/app/src/main/res/layout/gamedetail_item_gift.xml index 2334f550b0..c664ec860b 100644 --- a/app/src/main/res/layout/gamedetail_item_gift.xml +++ b/app/src/main/res/layout/gamedetail_item_gift.xml @@ -1,14 +1,15 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="122dp" + android:layout_height="wrap_content" + android:orientation="vertical" + android:background="@android:color/white" + app:left="8dp" + app:right="8dp" + app:top="4dp" + app:bottom="4dp" + app:tran="true">