1解决部分嗅探第二次打开嗅探失败的问题2嗅探增加传递如referer等其他header参数3修正筛选分类个别手机显示不全的问题4首页聚搜(5尝试解决拉起软键盘失败问题,尝试解决详情默认焦点为播放地址问题:自行测试)

pull/39/head
于俊 4 years ago
parent 5aa5bab888
commit 79a074aca3
  1. 11
      .idea/misc.xml
  2. 2
      app/src/main/java/com/github/tvbox/osc/bean/AbsXml.java
  3. 25
      app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
  4. 30
      app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java
  5. 18
      app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java
  6. 13
      app/src/main/java/com/github/tvbox/osc/ui/fragment/GridFragment.java
  7. 28
      app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java
  8. 15
      app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java
  9. 2
      app/src/main/res/layout/dialog_api_history.xml
  10. 1
      app/src/main/res/layout/dialog_grid_filter.xml
  11. 2
      app/src/main/res/layout/dialog_select.xml
  12. 2
      app/src/main/res/layout/item_grid_filter_value.xml

@ -18,10 +18,21 @@
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/activity_search.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/activity_setting.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/box_vod_control_view.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/dialog_api_history.xml" value="0.19708029197080293" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/dialog_grid_filter.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/dialog_quick_search.xml" value="0.18449694717281656" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/dialog_remote.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/dialog_select.xml" value="0.3225923244026068" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/dialog_tip.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/fragment_grid.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/fragment_model.xml" value="0.33" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/fragment_user.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/item_channel_group_layout.xml" value="0.22826086956521738" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/item_dialog_select.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/item_grid.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/item_grid_filter.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/item_grid_filter_value.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/item_list.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/item_live_channel_layout.xml" value="0.22826086956521738" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/item_quick_search_lite.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/loadsir_loading_layout.xml" value="0.3619791666666667" />

@ -13,4 +13,6 @@ import java.io.Serializable;
public class AbsXml implements Serializable {
@XStreamAlias("list")
public Movie movie;
@XStreamAlias("msg")
public String msg;
}

@ -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();
}
});
}

@ -288,6 +288,7 @@ public class PlayActivity extends BaseActivity {
String url = info.getString("url");
HashMap<String, String> 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<String, String > 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<String, String > map = new HashMap<String, String>() ;
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);

@ -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<Runnable> 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) {

@ -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);
}

@ -286,6 +286,7 @@ public class PlayFragment extends BaseLazyFragment {
String url = info.getString("url");
HashMap<String, String> 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<String, String > 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);

@ -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);

@ -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"

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:minHeight="200dp"
android:layout_height="match_parent">
<LinearLayout

@ -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"

@ -11,4 +11,4 @@
android:padding="@dimen/vs_8"
android:singleLine="true"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_24" />
android:textSize="@dimen/ts_20" />

Loading…
Cancel
Save