From 79a074aca327ae22e6a27cb871b31d556aeefdfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E4=BF=8A?= <215613905@qq.com> Date: Wed, 31 Aug 2022 15:46:26 +0800 Subject: [PATCH] =?UTF-8?q?1=E8=A7=A3=E5=86=B3=E9=83=A8=E5=88=86=E5=97=85?= =?UTF-8?q?=E6=8E=A2=E7=AC=AC=E4=BA=8C=E6=AC=A1=E6=89=93=E5=BC=80=E5=97=85?= =?UTF-8?q?=E6=8E=A2=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=982?= =?UTF-8?q?=E5=97=85=E6=8E=A2=E5=A2=9E=E5=8A=A0=E4=BC=A0=E9=80=92=E5=A6=82?= =?UTF-8?q?referer=E7=AD=89=E5=85=B6=E4=BB=96header=E5=8F=82=E6=95=B03?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E7=AD=9B=E9=80=89=E5=88=86=E7=B1=BB=E4=B8=AA?= =?UTF-8?q?=E5=88=AB=E6=89=8B=E6=9C=BA=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=984=E9=A6=96=E9=A1=B5=E8=81=9A?= =?UTF-8?q?=E6=90=9C=EF=BC=885=E5=B0=9D=E8=AF=95=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E6=8B=89=E8=B5=B7=E8=BD=AF=E9=94=AE=E7=9B=98=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98,=E5=B0=9D=E8=AF=95=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=BB=98=E8=AE=A4=E7=84=A6=E7=82=B9=E4=B8=BA?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E5=9C=B0=E5=9D=80=E9=97=AE=E9=A2=98:?= =?UTF-8?q?=E8=87=AA=E8=A1=8C=E6=B5=8B=E8=AF=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 11 +++++++ .../com/github/tvbox/osc/bean/AbsXml.java | 2 ++ .../tvbox/osc/ui/activity/DetailActivity.java | 25 +++++++++------- .../tvbox/osc/ui/activity/PlayActivity.java | 30 +++++++++++++------ .../tvbox/osc/ui/activity/SearchActivity.java | 18 +++++++++-- .../tvbox/osc/ui/fragment/GridFragment.java | 13 +++++++- .../tvbox/osc/ui/fragment/PlayFragment.java | 28 +++++++++++------ .../tvbox/osc/ui/fragment/UserFragment.java | 15 ++++++++-- .../main/res/layout/dialog_api_history.xml | 2 +- .../main/res/layout/dialog_grid_filter.xml | 1 + app/src/main/res/layout/dialog_select.xml | 2 +- .../res/layout/item_grid_filter_value.xml | 2 +- 12 files changed, 111 insertions(+), 38 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index efd482e5..97edd0fc 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -18,10 +18,21 @@ + + + + + + + + + + + diff --git a/app/src/main/java/com/github/tvbox/osc/bean/AbsXml.java b/app/src/main/java/com/github/tvbox/osc/bean/AbsXml.java index ebcbbeae..332b6ebd 100644 --- a/app/src/main/java/com/github/tvbox/osc/bean/AbsXml.java +++ b/app/src/main/java/com/github/tvbox/osc/bean/AbsXml.java @@ -13,4 +13,6 @@ import java.io.Serializable; public class AbsXml implements Serializable { @XStreamAlias("list") public Movie movie; + @XStreamAlias("msg") + public String msg; } \ No newline at end of file diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java index 06394016..b8e2570c 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java @@ -178,6 +178,8 @@ public class DetailActivity extends BaseActivity { getSupportFragmentManager().beginTransaction().show(playFragment).commitAllowingStateLoss(); tvPlay.setText("全屏"); } + //禁用播放地址焦点 + tvPlayUrl.setFocusable(false); tvSort.setOnClickListener(new View.OnClickListener() { @SuppressLint("NotifyDataSetChanged") @Override @@ -209,16 +211,6 @@ public class DetailActivity extends BaseActivity { } }); - tvPlayUrl.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - //获取剪切板管理器 - ClipboardManager cm = (ClipboardManager)getSystemService(mContext.CLIPBOARD_SERVICE); - //设置内容到剪切板 - cm.setPrimaryClip(ClipData.newPlainText(null, tvPlayUrl.getText().toString().replace("播放地址:",""))); - Toast.makeText(DetailActivity.this, "已复制", Toast.LENGTH_SHORT).show(); - } - }); tvQuickSearch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -265,6 +257,16 @@ public class DetailActivity extends BaseActivity { } } }); + tvPlayUrl.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //获取剪切板管理器 + ClipboardManager cm = (ClipboardManager)getSystemService(mContext.CLIPBOARD_SERVICE); + //设置内容到剪切板 + cm.setPrimaryClip(ClipData.newPlainText(null, tvPlayUrl.getText().toString().replace("播放地址: ",""))); + Toast.makeText(DetailActivity.this, "已复制", Toast.LENGTH_SHORT).show(); + } + }); mGridView.setOnItemListener(new TvRecyclerView.OnItemListener() { @Override public void onItemPreSelected(TvRecyclerView parent, View itemView, int position) { @@ -529,7 +531,7 @@ public class DetailActivity extends BaseActivity { flag.selected = false; } //设置播放地址 - setTextShow(tvPlayUrl, "播放地址:", vodInfo.seriesMap.get(vodInfo.playFlag).get(0).url); + setTextShow(tvPlayUrl, "播放地址: ", vodInfo.seriesMap.get(vodInfo.playFlag).get(0).url); seriesFlagAdapter.setNewData(vodInfo.seriesFlags); mGridViewFlag.scrollToPosition(flagScrollTo); @@ -551,6 +553,7 @@ public class DetailActivity extends BaseActivity { llPlayerFragmentContainer.setVisibility(View.GONE); llPlayerFragmentContainerBlock.setVisibility(View.GONE); } + if(absXml != null && absXml.msg != null && !absXml.msg.isEmpty())Toast.makeText(DetailActivity.this, absXml.msg, Toast.LENGTH_SHORT).show(); } }); } diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java index 38ae9c6e..d16edbf5 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java @@ -288,6 +288,7 @@ public class PlayActivity extends BaseActivity { String url = info.getString("url"); HashMap headers = null; webUserAgent = null; + webHeaderMap = null; if (info.has("header")) { try { JSONObject hds = new JSONObject(info.getString("header")); @@ -302,6 +303,7 @@ public class PlayActivity extends BaseActivity { webUserAgent = hds.getString(key).trim(); } } + webHeaderMap = headers; } catch (Throwable th) { } @@ -508,6 +510,7 @@ public class PlayActivity extends BaseActivity { private String parseFlag; private String webUrl; private String webUserAgent; + private Map webHeaderMap; private void initParse(String flag, boolean useParse, String playUrl, final String url) { parseFlag = flag; @@ -850,22 +853,31 @@ public class PlayActivity extends BaseActivity { @Override public void run() { // webUserAgent = "Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Mobile Safari/537.36"; - String ua = webUserAgent; if (mXwalkWebView != null) { mXwalkWebView.stopLoading(); - if(ua != null) { - mXwalkWebView.getSettings().setUserAgentString(ua); + Map map = new HashMap() ; + + if(webUserAgent != null) { + mXwalkWebView.getSettings().setUserAgentString(webUserAgent); } //mXwalkWebView.clearCache(true); - mXwalkWebView.loadUrl(url); + if(webHeaderMap != null){ + mXwalkWebView.loadUrl(url,webHeaderMap); + }else { + mXwalkWebView.loadUrl(url); + } } if (mSysWebView != null) { mSysWebView.stopLoading(); - if(ua != null) { - mSysWebView.getSettings().setUserAgentString(ua); + if(webUserAgent != null) { + mSysWebView.getSettings().setUserAgentString(webUserAgent); } //mSysWebView.clearCache(true); - mSysWebView.loadUrl(url); + if(webHeaderMap != null){ + mSysWebView.loadUrl(url,webHeaderMap); + }else { + mSysWebView.loadUrl(url); + } } } }); @@ -987,7 +999,7 @@ public class PlayActivity extends BaseActivity { settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } // settings.setCacheMode(WebSettings.LOAD_NO_CACHE); - settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); + settings.setCacheMode(WebSettings.LOAD_DEFAULT); /* 添加webView配置 */ //设置编码 settings.setDefaultTextEncodingName("utf-8"); @@ -1148,7 +1160,7 @@ public class PlayActivity extends BaseActivity { settings.setBuiltInZoomControls(true); settings.setSupportZoom(false); // settings.setCacheMode(WebSettings.LOAD_NO_CACHE); - settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); + settings.setCacheMode(WebSettings.LOAD_DEFAULT); // settings.setUserAgentString(ANDROID_UA); webView.setBackgroundColor(Color.BLACK); diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java index b8aa8b53..e9665332 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java @@ -1,6 +1,7 @@ package com.github.tvbox.osc.ui.activity; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; @@ -8,6 +9,7 @@ import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; +import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; @@ -82,6 +84,8 @@ public class SearchActivity extends BaseActivity { return R.layout.activity_search; } + + private static Boolean hasKeyBoard; @Override protected void init() { disableKeyboard(SearchActivity.this); @@ -95,6 +99,7 @@ public class SearchActivity extends BaseActivity { * @param activity Activity */ public static void disableKeyboard(Activity activity) { + hasKeyBoard = false; activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); } @@ -103,9 +108,15 @@ public class SearchActivity extends BaseActivity { * @param activity Activity */ public static void enableKeyboard(Activity activity) { + hasKeyBoard = true; activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); } + public void openSystemKeyBoard() { + InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.showSoftInput(this.getCurrentFocus(), InputMethodManager.SHOW_FORCED); + } + private List pauseRunnable = null; @Override @@ -196,7 +207,8 @@ public class SearchActivity extends BaseActivity { @Override public void onClick(View v) { // Toast.makeText(mContext,"点击",Toast.LENGTH_SHORT).show(); - enableKeyboard(SearchActivity.this); + if(!hasKeyBoard)enableKeyboard(SearchActivity.this); + openSystemKeyBoard();//再次尝试拉起键盘 SearchActivity.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } }); @@ -429,8 +441,8 @@ public class SearchActivity extends BaseActivity { if (event.getAction() == KeyEvent.ACTION_DOWN) { int keyCode = event.getKeyCode(); if (keyCode == KeyEvent.KEYCODE_MENU) { -// Toast.makeText(mContext,"菜单键",Toast.LENGTH_SHORT).show(); - enableKeyboard(SearchActivity.this); + if(!hasKeyBoard)enableKeyboard(SearchActivity.this); + openSystemKeyBoard();//再次尝试拉起键盘 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } } else if (event.getAction() == KeyEvent.ACTION_UP) { diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/GridFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/GridFragment.java index 25713dbd..adc67a13 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/GridFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/GridFragment.java @@ -30,6 +30,8 @@ import com.owen.tvrecyclerview.widget.V7GridLayoutManager; import com.owen.tvrecyclerview.widget.V7LinearLayoutManager; import java.util.Stack; import android.view.ViewGroup; +import android.widget.Toast; + /** * @author pj567 * @date :2020/12/21 @@ -202,7 +204,11 @@ public class GridFragment extends BaseLazyFragment { else if(homeSourceBean.isQuickSearch() && Hawk.get(HawkConfig.FAST_SEARCH_MODE, false) && enableFastSearch()){ jumpActivity(FastSearchActivity.class, bundle); }else{ - jumpActivity(DetailActivity.class, bundle); + if(video.id == null || video.id.isEmpty()){ + jumpActivity(SearchActivity.class, bundle); + }else { + jumpActivity(DetailActivity.class, bundle); + } } } @@ -233,7 +239,11 @@ public class GridFragment extends BaseLazyFragment { if(page == 1){ showEmpty(); } + if(page > maxPage){ + Toast.makeText(getContext(), "没有更多了", Toast.LENGTH_SHORT).show(); + } } + if(absXml != null && absXml.msg != null && !absXml.msg.isEmpty())Toast.makeText(getContext(), absXml.msg, Toast.LENGTH_SHORT).show(); if (page > maxPage) { gridAdapter.loadMoreEnd(); } else { @@ -250,6 +260,7 @@ public class GridFragment extends BaseLazyFragment { private void initData() { showLoading(); isLoad = false; + scrollTop(); sourceViewModel.getList(sortData, page); } diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java index 7cebffd3..ac10b3ff 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java @@ -286,6 +286,7 @@ public class PlayFragment extends BaseLazyFragment { String url = info.getString("url"); HashMap headers = null; webUserAgent = null; + webHeaderMap = null; if (info.has("header")) { try { JSONObject hds = new JSONObject(info.getString("header")); @@ -300,6 +301,7 @@ public class PlayFragment extends BaseLazyFragment { webUserAgent = hds.getString(key).trim(); } } + webHeaderMap = headers; } catch (Throwable th) { } @@ -520,6 +522,7 @@ public class PlayFragment extends BaseLazyFragment { private String parseFlag; private String webUrl; private String webUserAgent; + private Map webHeaderMap; private void initParse(String flag, boolean useParse, String playUrl, final String url) { parseFlag = flag; @@ -864,22 +867,29 @@ public class PlayFragment extends BaseLazyFragment { @Override public void run() { // webUserAgent = "Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Mobile Safari/537.36"; - String ua = webUserAgent; if (mXwalkWebView != null) { mXwalkWebView.stopLoading(); - if(ua != null) { - mXwalkWebView.getSettings().setUserAgentString(ua); + if(webUserAgent != null) { + mXwalkWebView.getSettings().setUserAgentString(webUserAgent); } //mXwalkWebView.clearCache(true); - mXwalkWebView.loadUrl(url); + if(webHeaderMap != null){ + mXwalkWebView.loadUrl(url,webHeaderMap); + }else { + mXwalkWebView.loadUrl(url); + } } if (mSysWebView != null) { mSysWebView.stopLoading(); - if(ua != null) { - mSysWebView.getSettings().setUserAgentString(ua); + if(webUserAgent != null) { + mSysWebView.getSettings().setUserAgentString(webUserAgent); } //mSysWebView.clearCache(true); - mSysWebView.loadUrl(url); + if(webHeaderMap != null){ + mSysWebView.loadUrl(url,webHeaderMap); + }else { + mSysWebView.loadUrl(url); + } } } }); @@ -1001,7 +1011,7 @@ public class PlayFragment extends BaseLazyFragment { settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } // settings.setCacheMode(WebSettings.LOAD_NO_CACHE); - settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); + settings.setCacheMode(WebSettings.LOAD_DEFAULT); /* 添加webView配置 */ //设置编码 settings.setDefaultTextEncodingName("utf-8"); @@ -1162,7 +1172,7 @@ public class PlayFragment extends BaseLazyFragment { settings.setBuiltInZoomControls(true); settings.setSupportZoom(false); // settings.setCacheMode(WebSettings.LOAD_NO_CACHE); - settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); + settings.setCacheMode(WebSettings.LOAD_DEFAULT); // settings.setUserAgentString(ANDROID_UA); webView.setBackgroundColor(Color.BLACK); diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java index 21546595..38edfde1 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java @@ -16,6 +16,7 @@ import com.github.tvbox.osc.cache.RoomDataManger; import com.github.tvbox.osc.event.ServerEvent; import com.github.tvbox.osc.ui.activity.CollectActivity; import com.github.tvbox.osc.ui.activity.DetailActivity; +import com.github.tvbox.osc.ui.activity.FastSearchActivity; import com.github.tvbox.osc.ui.activity.HistoryActivity; import com.github.tvbox.osc.ui.activity.LivePlayActivity; import com.github.tvbox.osc.ui.activity.PushActivity; @@ -128,9 +129,19 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen Bundle bundle = new Bundle(); bundle.putString("id", vod.id); bundle.putString("sourceKey", vod.sourceKey); - jumpActivity(DetailActivity.class, bundle); + if(Hawk.get(HawkConfig.HOME_REC, 0)==1 && Hawk.get(HawkConfig.FAST_SEARCH_MODE, false)){ + bundle.putString("title", vod.name); + jumpActivity(FastSearchActivity.class, bundle); + }else { + jumpActivity(DetailActivity.class, bundle); + } } else { - Intent newIntent = new Intent(mContext, SearchActivity.class); + Intent newIntent; + if(Hawk.get(HawkConfig.FAST_SEARCH_MODE, false)){ + newIntent = new Intent(mContext, FastSearchActivity.class); + }else { + newIntent = new Intent(mContext, SearchActivity.class); + } newIntent.putExtra("title", vod.name); newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); mActivity.startActivity(newIntent); diff --git a/app/src/main/res/layout/dialog_api_history.xml b/app/src/main/res/layout/dialog_api_history.xml index cdf231f6..d4ecbd95 100644 --- a/app/src/main/res/layout/dialog_api_history.xml +++ b/app/src/main/res/layout/dialog_api_history.xml @@ -35,7 +35,7 @@ android:paddingLeft="@dimen/vs_30" android:paddingRight="@dimen/vs_30" app:layout_constrainedHeight="true" - app:layout_constraintHeight_max="@dimen/vs_480" + app:layout_constraintHeight_max="@dimen/vs_410" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/title" diff --git a/app/src/main/res/layout/dialog_grid_filter.xml b/app/src/main/res/layout/dialog_grid_filter.xml index a55e6ac7..6b45d2ff 100644 --- a/app/src/main/res/layout/dialog_grid_filter.xml +++ b/app/src/main/res/layout/dialog_grid_filter.xml @@ -1,6 +1,7 @@ + android:textSize="@dimen/ts_20" />