Skip to content

Commit 16b0c2e

Browse files
author
ChenRui
committed
添加检查更新
添加开放源代码许可 3分钟之内启动APP进入首页 夜间模式主题适配 网页错误弹出空视图
1 parent 8f6ddb3 commit 16b0c2e

36 files changed

+394
-75
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,22 @@
2727
android:name=".activity.LauncherActivity"
2828
android:screenOrientation="portrait"
2929
android:theme="@style/AppTheme.NoActionBar.FullScreen">
30-
<!-- <intent-filter>
30+
<intent-filter>
3131
<action android:name="android.intent.action.MAIN"/>
3232

3333
<category android:name="android.intent.category.LAUNCHER"/>
34-
</intent-filter>-->
34+
</intent-filter>
3535
</activity>
3636

3737
<!--主界面-->
3838
<activity
3939
android:name=".activity.MainActivity"
4040
android:screenOrientation="portrait"
4141
android:theme="@style/AppTheme.Dark">
42-
<intent-filter>
42+
<!-- <intent-filter>
4343
<action android:name="android.intent.action.MAIN"/>
4444
<category android:name="android.intent.category.LAUNCHER"/>
45-
</intent-filter>
45+
</intent-filter>-->
4646
</activity>
4747

4848
<!-- <activity

app/src/main/assets/license.html

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
5+
<meta http-equiv="Cache-Control" content="no-cache" />
6+
<meta name="viewport" content="width=device-width,initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
7+
<meta name="MobileOptimized" content="320"/>
8+
<title>开放源代码许可</title>
9+
<style type="text/css">
10+
html, body, span, div, p, a, table, tbody, td, h1, h2, h3, img, form, font, strong, b, i, dl, dt, dd, ol, ul, li, dl, dd, dt, iframe, label, blockquote, input, button {padding:0; margin:0;list-style: none;}
11+
12+
body {line-height:1.8em;font-size:15px;font-family:'Hiragino Sans GB','\5FAE\8F6F\96C5\9ED1',arial;color:#3b424c;background:#fff;-webkit-text-size-adjust:none;}
13+
img {vertical-align:middle; border:none;}
14+
a, a:link {color:#3b424c; text-decoration:none;}
15+
a:active, a:visited {color:#3b424c;}
16+
input,button,select,textarea{outline:none}
17+
textarea{resize:none}
18+
19+
.wrap{ padding:10px 15px 20px;}
20+
.scroll a{ color:#3b424c; text-decoration:underline;}
21+
h1{ font-size:24px;line-height:1.2em; font-weight:normal; text-align:center; color:#313436; margin-bottom:15px;}
22+
p{padding-bottom:10px;}
23+
b{display: block;padding-top: 24px;}
24+
.nav{ margin:8px 0; text-align:left;}
25+
.nav a{ padding:5px 13px; font-size:12px; line-height:14px; color:#52575b; background:#e1e1e1; border:1px solid #cdcdcd;-webkit-box-shadow:inset 0 1px 1px #ffffff;-moz-box-shadow:inset 0 1px 1px #ffffff;-ms-box-shadow:inset 0 1px 1px #ffffff;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px; text-decoration:none;}
26+
27+
</style>
28+
</head>
29+
30+
<body>
31+
<div class="wrap">
32+
<div class="scroll">
33+
<b>非常感谢以下开源代码对博客园Android客户端的支持。</b>
34+
35+
<b>MIT LICENSE</b>
36+
<p><a href="https://github.com/jhy/jsoup">jsoup</a></p>
37+
<p><a href="https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh">android-Ultra-Pull-To-Refresh</a></p>
38+
<p><a href="https://github.com/ximsfei/Android-skin-support">Android-skin-support</a></p>
39+
40+
<b>APACHE LICENSE</b>
41+
<p><a href="https://github.com/square/okhttp">okhttp</a></p>
42+
<p><a href="https://github.com/square/retrofit">retrofit</a></p>
43+
<p><a href="https://github.com/JakeWharton/butterknife">butterknife</a></p>
44+
<p><a href="https://github.com/ReactiveX/RxJava">RxJava</a></p>
45+
<p><a href="https://github.com/ReactiveX/RxAndroid">RxAndroid</a></p>
46+
<p><a href="https://github.com/pardom/ActiveAndroid">ActiveAndroid</a></p>
47+
<p><a href="https://github.com/google/gson">gson</a></p>
48+
<p><a href="https://github.com/jianghejie/XRecyclerView">XRecyclerView</a></p>
49+
<p><a href="https://github.com/vinc3m1/RoundedImageView">RoundedImageView</a></p>
50+
<p><a href="https://github.com/bumptech/glide">glide</a></p>
51+
<p><a href="https://github.com/greenrobot/EventBus">EventBus</a></p>
52+
<p><a href="https://github.com/ikew0ng/SwipeBackLayout">SwipeBackLayout</a></p>
53+
<p><a href="https://github.com/davideas/FlexibleAdapter">FlexibleAdapter</a></p>
54+
</div>
55+
56+
</div>
57+
</body>
58+
</html>

app/src/main/java/com/rae/cnblogs/CnblogsApplication.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.rae.cnblogs;
22

33
import android.app.Application;
4+
import android.content.pm.PackageManager;
45

56
import com.avos.avoscloud.AVOSCloud;
67
import com.avos.avoscloud.feedback.FeedbackThread;
@@ -81,4 +82,30 @@ private void initUmengShareConfig() {
8182
public Application getApplication() {
8283
return this;
8384
}
85+
86+
87+
/**
88+
* 获取渠道包
89+
*/
90+
public String getChannel() {
91+
try {
92+
return getPackageManager()
93+
.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA)
94+
.metaData
95+
.getString("UMENG_CHANNEL", "official");
96+
} catch (Exception e) {
97+
e.printStackTrace();
98+
}
99+
return "official";
100+
}
101+
102+
103+
public int getVersionCode() {
104+
try {
105+
return getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_META_DATA).versionCode;
106+
} catch (PackageManager.NameNotFoundException e) {
107+
e.printStackTrace();
108+
}
109+
return 1;
110+
}
84111
}

app/src/main/java/com/rae/cnblogs/ThemeCompat.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package com.rae.cnblogs;
22

3+
import android.app.Activity;
34
import android.content.Context;
45
import android.content.res.Resources;
56
import android.graphics.drawable.Drawable;
7+
import android.os.Build;
8+
import android.view.Window;
69

710
import com.rae.cnblogs.message.ThemeChangedEvent;
811

912
import org.greenrobot.eventbus.EventBus;
1013

14+
import java.lang.reflect.Field;
15+
import java.lang.reflect.Method;
16+
1117
import skin.support.SkinCompatManager;
1218

1319
/**
@@ -79,4 +85,42 @@ public static void switchNightMode() {
7985
// 发出通知
8086
EventBus.getDefault().post(new ThemeChangedEvent(ThemeCompat.isNight()));
8187
}
88+
89+
90+
/**
91+
* 刷新状态栏颜色
92+
*
93+
* @param nightMode 是否为深色模式
94+
*/
95+
public static void refreshStatusColor(Activity context, boolean nightMode) {
96+
changeMiUIStatusMode(context.getWindow(), nightMode);
97+
}
98+
99+
/**
100+
* 修改小米手机系统的状态栏字体颜色
101+
*
102+
* @param dark 状态栏黑色字体
103+
*/
104+
private static void changeMiUIStatusMode(Window window, boolean dark) {
105+
if (!Build.BRAND.toLowerCase().equalsIgnoreCase("xiaomi")) {
106+
return;
107+
}
108+
109+
if (window != null) {
110+
Class clazz = window.getClass();
111+
try {
112+
int darkModeFlag = 0;
113+
Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams");
114+
Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");
115+
darkModeFlag = field.getInt(layoutParams);
116+
Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class);
117+
if (dark) {
118+
extraFlagField.invoke(window, darkModeFlag, darkModeFlag);//状态栏透明且黑色字体
119+
} else {
120+
extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体
121+
}
122+
} catch (Exception ignored) {
123+
}
124+
}
125+
}
82126
}

app/src/main/java/com/rae/cnblogs/activity/BaseActivity.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.rae.cnblogs.activity;
22

33
import android.content.Intent;
4-
import android.content.pm.PackageManager;
54
import android.os.Bundle;
65
import android.support.annotation.LayoutRes;
76
import android.support.annotation.Nullable;
@@ -13,6 +12,7 @@
1312
import android.view.View;
1413
import android.widget.TextView;
1514

15+
import com.rae.cnblogs.CnblogsApplication;
1616
import com.rae.cnblogs.R;
1717
import com.rae.cnblogs.sdk.config.CnblogSdkConfig;
1818
import com.rae.swift.Rx;
@@ -21,7 +21,6 @@
2121
import java.util.List;
2222

2323
import butterknife.ButterKnife;
24-
import skin.support.SkinCompatManager;
2524

2625
/**
2726
* 基类
@@ -146,12 +145,14 @@ protected void onLoginCallBack() {
146145
}
147146

148147
public int getVersionCode() {
149-
try {
150-
return getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_META_DATA).versionCode;
151-
} catch (PackageManager.NameNotFoundException e) {
152-
e.printStackTrace();
153-
}
154-
return 1;
148+
return ((CnblogsApplication) getApplication()).getVersionCode();
149+
}
150+
151+
/**
152+
* 获取渠道包
153+
*/
154+
public String getChannel() {
155+
return ((CnblogsApplication) getApplication()).getChannel();
155156
}
156157

157158
protected CnblogSdkConfig config() {

app/src/main/java/com/rae/cnblogs/activity/LauncherActivity.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@
1313
import com.rae.cnblogs.presenter.ILauncherPresenter;
1414
import com.rae.cnblogs.sdk.bean.BlogType;
1515

16+
import java.util.concurrent.TimeUnit;
17+
1618
import butterknife.BindView;
1719
import butterknife.OnClick;
20+
import io.reactivex.Observable;
21+
import io.reactivex.functions.Consumer;
1822

1923
/**
2024
* 启动页
@@ -40,8 +44,28 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
4044

4145
@Override
4246
protected void onResume() {
43-
mLauncherPresenter.start();
4447
super.onResume();
48+
49+
// 判断主界面退出时间是否过短
50+
long mainExitTimeMillis = config().getMainExitTimeMillis();
51+
long span = System.currentTimeMillis() - mainExitTimeMillis;
52+
53+
// 第一次或者是程序退出的时间超过3分钟(180000),就启动当前界面
54+
if (mainExitTimeMillis <= 0 || span > 180000) {
55+
mLauncherPresenter.start();
56+
} else {
57+
58+
// 跳过启动界面
59+
AppRoute.jumpToMain(this);
60+
Observable.timer(500, TimeUnit.MILLISECONDS)
61+
.subscribe(new Consumer<Long>() {
62+
@Override
63+
public void accept(Long aLong) throws Exception {
64+
finish();
65+
}
66+
});
67+
}
68+
4569
}
4670

4771
@Override

app/src/main/java/com/rae/cnblogs/activity/MainActivity.java

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.rae.cnblogs.R;
2727
import com.rae.cnblogs.RaeImageLoader;
2828
import com.rae.cnblogs.RxObservable;
29+
import com.rae.cnblogs.ThemeCompat;
2930
import com.rae.cnblogs.dialog.IAppDialog;
3031
import com.rae.cnblogs.dialog.IAppDialogClickListener;
3132
import com.rae.cnblogs.dialog.impl.HintCardDialog;
@@ -34,6 +35,7 @@
3435
import com.rae.cnblogs.fragment.HomeFragment;
3536
import com.rae.cnblogs.fragment.MineFragment;
3637
import com.rae.cnblogs.message.TabEvent;
38+
import com.rae.cnblogs.message.ThemeChangedEvent;
3739
import com.rae.cnblogs.sdk.ApiDefaultObserver;
3840
import com.rae.cnblogs.sdk.CnblogsApiFactory;
3941
import com.rae.cnblogs.sdk.bean.BlogType;
@@ -244,6 +246,7 @@ protected void onDestroy() {
244246
}
245247
RxObservable.dispose(); // 释放所有请求
246248
RaeImageLoader.clearMemoryCache(getApplicationContext()); // 清除图片内存
249+
config().setMainExitTimeMillis(System.currentTimeMillis());
247250
super.onDestroy();
248251
}
249252

@@ -268,24 +271,15 @@ public void onClick(IAppDialog dialog, int buttonType) {
268271
}
269272
}
270273

274+
@Subscribe
275+
public void onEvent(ThemeChangedEvent event) {
276+
ThemeCompat.refreshStatusColor(this, true); // 深色状态栏
277+
}
278+
271279
@Subscribe
272280
public void onEvent(JobEvent event) {
273281
if (mCnblogsServiceBinder == null) return;
274282
mCnblogsServiceBinder.getJobScheduler().start(event.getAction());
275283
}
276284

277-
/**
278-
* 获取渠道包
279-
*/
280-
public String getChannel() {
281-
try {
282-
return getPackageManager()
283-
.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA)
284-
.metaData
285-
.getString("UMENG_CHANNEL", "official");
286-
} catch (Exception e) {
287-
e.printStackTrace();
288-
}
289-
return "official";
290-
}
291285
}

0 commit comments

Comments
 (0)