diff --git a/app/src/main/java/com/gh/common/util/PackageInstaller.kt b/app/src/main/java/com/gh/common/util/PackageInstaller.kt index 5db42fc727..d335cbae39 100644 --- a/app/src/main/java/com/gh/common/util/PackageInstaller.kt +++ b/app/src/main/java/com/gh/common/util/PackageInstaller.kt @@ -26,8 +26,8 @@ object PackageInstaller { * 为了兼容java代码 */ @JvmStatic - fun install(context: Context, downloadEntity: DownloadEntity) { - install(context, downloadEntity, true) + fun install(context: Context, downloadEntity: DownloadEntity?) { + downloadEntity?.let { install(context, downloadEntity, true) } } /** @@ -44,15 +44,19 @@ object PackageInstaller { val currentActivity = AppManager.getInstance().currentActivity() ?: return - InstallPermissionDialogFragment.show(currentActivity as AppCompatActivity, downloadEntity) { - // 取消状态栏下载完成的通知,若存在 - downloadEntity.meta[Constants.MARK_ALREADY_TRIGGERED_INSTALLATION] = "YES" - DownloadNotificationHelper.addOrUpdateDownloadNotification(downloadEntity) + // TODO 此处可能遇到 activity 是 WXEntryActivity + // TODO 当 activity 全部出栈,但是应用还在下载游戏,下载完会唤不起安装! + if (currentActivity is AppCompatActivity) { + InstallPermissionDialogFragment.show(currentActivity, downloadEntity) { + // 取消状态栏下载完成的通知,若存在 + downloadEntity.meta[Constants.MARK_ALREADY_TRIGGERED_INSTALLATION] = "YES" + DownloadNotificationHelper.addOrUpdateDownloadNotification(downloadEntity) - if (isXapk) { - XapkInstaller.install(context, downloadEntity, showUnzipToast) - } else { - install(context, downloadEntity.path) + if (isXapk) { + XapkInstaller.install(context, downloadEntity, showUnzipToast) + } else { + install(context, downloadEntity.path) + } } } } diff --git a/app/src/main/java/com/gh/common/view/ExpandTextView.java b/app/src/main/java/com/gh/common/view/ExpandTextView.java index 0fa2b85bb4..37bc25b73c 100644 --- a/app/src/main/java/com/gh/common/view/ExpandTextView.java +++ b/app/src/main/java/com/gh/common/view/ExpandTextView.java @@ -160,6 +160,10 @@ public class ExpandTextView extends AppCompatTextView { float subSequenceWidth; for (int i = lastLineText.length() - 1; i > 0; i--) { if (mUseGradientAlphaEndText) { + + // 避免 additionalEntTextCount 大于 i 造成数组越界 (TODO 代码太多,有时间再检查) + if (additionalEndTextCount > i) return; + subSequence = lastLineText.subSequence(0, i - additionalEndTextCount); subSequenceWidth = paint.measureText(subSequence.toString()); diff --git a/app/src/main/java/com/gh/gamecenter/NormalActivity.java b/app/src/main/java/com/gh/gamecenter/NormalActivity.java index 3c00fb4d0b..0975886c6b 100644 --- a/app/src/main/java/com/gh/gamecenter/NormalActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NormalActivity.java @@ -111,8 +111,8 @@ public abstract class NormalActivity extends ToolBarActivity { @Override public void onBackPressed() { - if (mTargetFragment.isAdded() - && mTargetFragment instanceof NormalFragment + if (mTargetFragment instanceof NormalFragment + && mTargetFragment.isAdded() && !((NormalFragment) mTargetFragment).onBackPressed()) { super.onBackPressed(); } diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index d35d1ecc9c..59010c8d9a 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -355,6 +355,8 @@ public class SuggestionActivity extends ToolBarActivity implements OnRequestCall protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle extras = getIntent().getExtras(); + if (extras == null) return; + Object suggestType = extras.get(EntranceUtils.KEY_SUGGESTTYPE); if (suggestType instanceof SuggestType) { mSuggestType = (SuggestType) suggestType; diff --git a/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java b/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java index b0a938e148..12064e71bc 100644 --- a/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java +++ b/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java @@ -66,6 +66,9 @@ public class WeiBoShareActivity extends Activity implements WbShareCallback { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle extras = getIntent().getExtras(); + + if (extras == null) return; + mTitle = extras.getString(KET_TITLE); String shareIcon = extras.getString(KET_SHAREICON); mSummary = extras.getString(KET_SUMMARY); diff --git a/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt b/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt index b40ef98c2f..4fbd87807d 100644 --- a/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt @@ -64,7 +64,7 @@ class NewCategoryListFragment : ListFragment + mSubCategoryList = mPrimeCategory?.data as? ArrayList ?: arrayListOf() val initSelectedCategory = arguments?.getString(EntranceUtils.KEY_CATEGORY_INIT_TITLE) diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java index 09775a2d6b..a894121c6a 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java @@ -80,7 +80,7 @@ public class GameDownloadFragment extends BaseFragment implements View.OnClickLi String xapkStatus = downloadEntity.getMeta().get(XapkInstaller.XAPK_UNZIP_STATUS); if (location != null && XapkUnzipStatus.UNZIPPING.name().equals(xapkStatus)) { - if (location > adapter.getDoneList().size()) return; + if (location >= adapter.getDoneList().size()) return; adapter.getDoneList().set(location, downloadEntity); adapter.notifyItemChanged(location + 1); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt index 9fe2ea5156..2e90c29ae8 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt @@ -70,7 +70,7 @@ class RatingEditActivity : ToolBarActivity(), KeyboardHeightObserver { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setToolbarMenu(R.menu.menu_game_comment) - mGame = intent.getParcelableExtra(GameEntity.TAG) + mGame = intent.getParcelableExtra(GameEntity.TAG) ?: GameEntity(id = "") mFromAmway = intent.getBooleanExtra(EntranceUtils.KEY_AMWAY, false) mIsSkipSuccessPage = intent.getBooleanExtra(EntranceUtils.KEY_SKIP_SUCCESS_PAGE, false) mComment = intent.getParcelableExtra(RatingComment::class.java.simpleName) diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/CommentActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/CommentActivity.kt index beff7eb0ae..b0e9703342 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/CommentActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/CommentActivity.kt @@ -12,7 +12,6 @@ import com.gh.common.util.doOnEnd import com.gh.gamecenter.R import com.gh.gamecenter.entity.CommentEntity import com.gh.gamecenter.qa.answer.detail.AnswerDetailFragment -import com.gh.gamecenter.search.SearchDefaultFragment import com.lightgame.utils.Util_System_Keyboard import kotlinx.android.synthetic.main.activity_comment.* @@ -32,9 +31,9 @@ class CommentActivity : BaseActivity() { val articleId = intent.getStringExtra(ARTICLE_ID) - val communityId = intent.getStringExtra(COMMUNITY_ID) + val communityId = intent.getStringExtra(COMMUNITY_ID) ?: "" - val videoId = intent.getStringExtra(VIDEO_ID) + val videoId = intent.getStringExtra(VIDEO_ID) ?: "" val isVideoAuthor = intent.getBooleanExtra(IS_VIDEO_AUTHOR, false) val commentEntity: CommentEntity? = intent.getParcelableExtra(COMMENT_ENTITY) ?: null diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/detail/QuestionsDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/detail/QuestionsDetailFragment.kt index a2579690c7..ad7cbd6075 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/detail/QuestionsDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/detail/QuestionsDetailFragment.kt @@ -115,7 +115,7 @@ class QuestionsDetailFragment : } override fun provideListViewModel(): QuestionsDetailViewModel { - return viewModelProvider(QuestionsDetailViewModel.Factory(mQuestionsId!!)) + return viewModelProvider(QuestionsDetailViewModel.Factory(mQuestionsId ?: "")) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { @@ -152,7 +152,7 @@ class QuestionsDetailFragment : override fun onCreate(savedInstanceState: Bundle?) { arguments?.let { mIsCheckConcern = it.getBoolean(EntranceUtils.KEY_CHECK_QUESTION_CONCERN, false) - mQuestionsId = it.getString(EntranceUtils.KEY_QUESTIONS_ID) + mQuestionsId = it.getString(EntranceUtils.KEY_QUESTIONS_ID) ?: "" mPath = it.getString(EntranceUtils.KEY_PATH) mSpecialColumn = it.getParcelable(EntranceUtils.KEY_DATA) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryActivity.kt index c9e7097999..244621e2a3 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/manager/HistoryActivity.kt @@ -1,11 +1,11 @@ package com.gh.gamecenter.qa.questions.edit.manager import android.app.Activity -import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import android.content.Context import android.content.Intent import android.os.Bundle +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProviders import com.gh.common.util.EntranceUtils import com.gh.gamecenter.baselist.ListActivity import com.gh.gamecenter.baselist.NormalListViewModel @@ -38,7 +38,7 @@ class HistoryActivity : ListActivity if (it == null) { toast(R.string.post_failure_hint) diff --git a/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuActivity.kt b/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuActivity.kt index 6bde4d1405..866d208c29 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuActivity.kt @@ -30,7 +30,9 @@ class PatchKaifuActivity : ToolBarActivity() { setNavigationTitle("修改开服") mViewModel = ViewModelProviders.of(this).get(PatchKaifuViewModel::class.java) - mViewModel?.initData(intent.getParcelableExtra(ServerCalendarEntity.TAG), intent.getStringExtra(EntranceUtils.KEY_GAMEID)) + mViewModel?.initData( + intent.getParcelableExtra(ServerCalendarEntity.TAG) ?: ServerCalendarEntity(), + intent.getStringExtra(EntranceUtils.KEY_GAMEID) ?: "") mViewModel?.postResult?.observe(this, Observer { if (it != null) { val intent = Intent() diff --git a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoActivity.kt b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoActivity.kt index a232830691..c33ac623c6 100644 --- a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoActivity.kt @@ -35,7 +35,7 @@ class GameVideoActivity : ToolBarActivity() { mBinding = DataBindingUtil.bind(mContentView)!! // viewpager & tab content - val gameId = intent.getStringExtra(EntranceUtils.KEY_GAMEID) + val gameId = intent.getStringExtra(EntranceUtils.KEY_GAMEID) ?: "" val titles = arrayListOf("最热", "最新") val fragments = ArrayList() diff --git a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt index f5d2e02103..e6950b621e 100644 --- a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt @@ -109,7 +109,7 @@ class UploadVideoActivity : ToolBarActivity() { } else if (requestCode == REQUEST_CODE_IMAGE_CROP && resultCode == Activity.RESULT_OK) { if (data != null) { val imagePath = data.getStringExtra(CropImageActivity.RESULT_CLIP_PATH) - mUpdatedPosterPath = imagePath + mUpdatedPosterPath = imagePath ?: "" mBinding.videoPoster.setImageURI("file://$imagePath") LogUtils.logVideoStreamingUpload("更换封面", mPath, mEntranceLink, "") checkPostButtonStatus() @@ -578,10 +578,10 @@ class UploadVideoActivity : ToolBarActivity() { } else { val localVideoPoster = application.cacheDir.absolutePath + File.separator + System.currentTimeMillis() + ".jpg" try { - val bmp = ThumbnailUtils.createVideoThumbnail(mVideoFileEntity?.path, MediaStore.Images.Thumbnails.MINI_KIND) + val bmp = ThumbnailUtils.createVideoThumbnail(mVideoFileEntity?.path ?: "", MediaStore.Images.Thumbnails.MINI_KIND) // bmp 可能为空 FileOutputStream(localVideoPoster).use { out -> - bmp.compress(Bitmap.CompressFormat.PNG, 100, out) + bmp?.compress(Bitmap.CompressFormat.PNG, 100, out) } } catch (e: java.lang.Exception) { e.printStackTrace() diff --git a/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchFragment.java b/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchFragment.java index 3eb26205a3..2b61a1d4b3 100644 --- a/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchFragment.java @@ -107,6 +107,8 @@ public class GameNewsSearchFragment extends NormalFragment { Bundle args = getArguments(); + if (args == null) return; + String gameName = args.getString(EntranceUtils.KEY_GAMENAME); setNavigationTitle(gameName); diff --git a/libraries/LGLibrary b/libraries/LGLibrary index 93049eb802..9f2bebe7b8 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit 93049eb8029d00dfb05f4fa7c48ebb9e2d07c6b1 +Subproject commit 9f2bebe7b83df28619f40fe971e7057eef94e854