Commit 6b603cff authored by feihuaduo's avatar feihuaduo

修复mc不能选择文件的bug

无通知权限关闭服务
parent bd0682d2
package cn.garymb.ygomobile.ui.mycard; package cn.garymb.ygomobile.ui.mycard;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.ClipData;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
...@@ -19,10 +22,12 @@ import android.widget.ProgressBar; ...@@ -19,10 +22,12 @@ import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.tencent.smtt.sdk.ValueCallback;
import com.tencent.smtt.sdk.WebChromeClient; import com.tencent.smtt.sdk.WebChromeClient;
import com.tencent.smtt.sdk.WebSettings; import com.tencent.smtt.sdk.WebSettings;
import com.tencent.smtt.sdk.WebView; import com.tencent.smtt.sdk.WebView;
import java.io.File;
import java.text.MessageFormat; import java.text.MessageFormat;
import cn.garymb.ygomobile.YGOStarter; import cn.garymb.ygomobile.YGOStarter;
...@@ -30,10 +35,12 @@ import cn.garymb.ygomobile.lite.BuildConfig; ...@@ -30,10 +35,12 @@ import cn.garymb.ygomobile.lite.BuildConfig;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.activities.BaseActivity; import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.cards.DeckManagerActivity; import cn.garymb.ygomobile.ui.cards.DeckManagerActivity;
import cn.garymb.ygomobile.ui.home.MainActivity;
import cn.garymb.ygomobile.ui.mycard.mcchat.SplashActivity; import cn.garymb.ygomobile.ui.mycard.mcchat.SplashActivity;
public class MyCardActivity extends BaseActivity implements MyCard.MyCardListener, NavigationView.OnNavigationItemSelectedListener { public class MyCardActivity extends BaseActivity implements MyCard.MyCardListener, NavigationView.OnNavigationItemSelectedListener {
private static final int FILECHOOSER_RESULTCODE = 10;
private MyCardWebView mWebViewPlus; private MyCardWebView mWebViewPlus;
private MyCard mMyCard; private MyCard mMyCard;
protected DrawerLayout mDrawerlayout; protected DrawerLayout mDrawerlayout;
...@@ -41,6 +48,8 @@ public class MyCardActivity extends BaseActivity implements MyCard.MyCardListene ...@@ -41,6 +48,8 @@ public class MyCardActivity extends BaseActivity implements MyCard.MyCardListene
private TextView mNameView, mStatusView; private TextView mNameView, mStatusView;
private ProgressBar mProgressBar; private ProgressBar mProgressBar;
private ValueCallback<Uri> uploadMessage;
private ValueCallback<Uri[]> mUploadCallbackAboveL;
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
...@@ -89,6 +98,57 @@ public class MyCardActivity extends BaseActivity implements MyCard.MyCardListene ...@@ -89,6 +98,57 @@ public class MyCardActivity extends BaseActivity implements MyCard.MyCardListene
} }
super.onProgressChanged(view, newProgress); super.onProgressChanged(view, newProgress);
} }
@Override
public void openFileChooser(ValueCallback<Uri> valueCallback, String acceptType, String capture) {
uploadMessage = valueCallback;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
startActivityForResult( Intent.createChooser( i, "File Browser" ), FILECHOOSER_RESULTCODE );
}
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> valueCallback, FileChooserParams fileChooserParams) {
mUploadCallbackAboveL = valueCallback;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
startActivityForResult(
Intent.createChooser(i, "File Browser"),
FILECHOOSER_RESULTCODE);
return true;
}
// Android > 4.1.1 调用这个方法
// public void openFileChooser(ValueCallback<Uri> uploadMsg,
// String acceptType, String capture) {
// mUploadMessage = uploadMsg;
// choosePicture();
//
// Intent i = new Intent(Intent.ACTION_GET_CONTENT);
// i.addCategory(Intent.CATEGORY_OPENABLE);
// i.setType("*/*");
// startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
//
// }
//
// // 3.0 + 调用这个方法
// public void openFileChooser(ValueCallback<Uri> uploadMsg,
// String acceptType) {
// mUploadMessage = uploadMsg;
// choosePicture();
//
// }
//
// // Android < 3.0 调用这个方法
// public void openFileChooser(ValueCallback<Uri> uploadMsg) {
// mUploadMessage = uploadMsg;
// choosePicture();
// }
}); });
...@@ -123,6 +183,49 @@ public class MyCardActivity extends BaseActivity implements MyCard.MyCardListene ...@@ -123,6 +183,49 @@ public class MyCardActivity extends BaseActivity implements MyCard.MyCardListene
} }
} }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == uploadMessage && null == mUploadCallbackAboveL) return;
Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
if (mUploadCallbackAboveL != null) {
onActivityResultAboveL(requestCode, resultCode, data);
} else if (uploadMessage != null) {
uploadMessage.onReceiveValue(result);
uploadMessage = null;
}
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void onActivityResultAboveL(int requestCode, int resultCode, Intent data) {
if (requestCode != FILECHOOSER_RESULTCODE
|| mUploadCallbackAboveL == null) {
return;
}
Uri[] results = null;
if (resultCode == Activity.RESULT_OK) {
if (data == null) {
} else {
String dataString = data.getDataString();
ClipData clipData = data.getClipData();
if (clipData != null) {
results = new Uri[clipData.getItemCount()];
for (int i = 0; i < clipData.getItemCount(); i++) {
ClipData.Item item = clipData.getItemAt(i);
results[i] = item.getUri();
}
}
if (dataString != null)
results = new Uri[]{Uri.parse(dataString)};
}
}
mUploadCallbackAboveL.onReceiveValue(results);
mUploadCallbackAboveL = null;
return;
}
/*@Override /*@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (mWebViewPlus != null) { if (mWebViewPlus != null) {
......
...@@ -109,6 +109,13 @@ public class ServiceDuelAssistant extends Service { ...@@ -109,6 +109,13 @@ public class ServiceDuelAssistant extends Service {
startClipboardListener(); startClipboardListener();
} }
@Override
public void onDestroy() {
super.onDestroy();
//关闭悬浮窗时的声明
stopForeground(true);
}
private void startClipboardListener() { private void startClipboardListener() {
final ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); final ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
if (cm == null) if (cm == null)
...@@ -209,16 +216,15 @@ public class ServiceDuelAssistant extends Service { ...@@ -209,16 +216,15 @@ public class ServiceDuelAssistant extends Service {
builder.setSmallIcon(R.drawable.ic_icon); builder.setSmallIcon(R.drawable.ic_icon);
builder.setCustomContentView(remoteViews); builder.setCustomContentView(remoteViews);
startForeground(1, builder.build()); startForeground(1, builder.build());
}else {
//如果没有通知权限则关闭服务
stopForeground(true);
stopService(new Intent(ServiceDuelAssistant.this,ServiceDuelAssistant.class));
} }
} }
} }
@Override
public void onDestroy() {
super.onDestroy();
//关闭悬浮窗时的声明
stopForeground(true);
}
@Override @Override
public int onStartCommand(Intent intent, int flags, int startId) { public int onStartCommand(Intent intent, int flags, int startId) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment