以下は、私のアプリの問題の写真です。
起動時のアプリ:
100% 進行中:
ここで、キーを押してもう一度アプリに戻ると:
私が実際に望んでいること:ユーザーが戻るキーを押した後に戻ったときにアプリが再開され、リロードされないようにする必要があります。
以下のコードを共有しています。親切に、解決策を提案してください。
package com.url.app;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.webkit.ValueCallback;
import android.webkit.WebView;
import android.webkit.WebChromeClient;
import android.webkit.WebViewClient;
import android.provider.Settings;
public class MainActivity extends Activity {
private WebView wv;
//make HTML upload button work in Webview
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE=1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if(requestCode==FILECHOOSER_RESULTCODE)
{
if (null == mUploadMessage) return;
Uri result = intent == null || resultCode != RESULT_OK ? null
: intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}
}
//Check if user is online
public boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {
return true;
}
return false;
}
//if not online show alertdialog with settings button
public void showNoConnectionDialog(Context ctx1) {
final Context ctx = ctx1;
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setCancelable(true);
builder.setMessage(R.string.no_connection);
builder.setTitle(R.string.no_connection_title);
builder.setPositiveButton(R.string.settings, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
ctx.startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
}
});
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
return;
}
});
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
return;
}
});
builder.setCancelable(false);
builder.show();
}
//supress lint coz it cries over javascript enabled
@SuppressLint("SetJavaScriptEnabled") @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//if not online then show NO CONNECTION Dialog
if(!isOnline()) {
showNoConnectionDialog(MainActivity.this);
}
//webview
wv = new WebView(this);
//loadurl
wv.loadUrl(getString(R.string.siteurl));
//Enable JavaScript
wv.getSettings().setJavaScriptEnabled(true);
//Zoom
wv.getSettings().setBuiltInZoomControls(true);
wv.getSettings().setSupportZoom(true);
//progressdialog
final ProgressDialog pd = ProgressDialog.show(this, "", getString(R.string.loading), true);
pd.setCanceledOnTouchOutside(false);
wv.setWebViewClient(new WebViewClient(){
//hide progressdialog when page loads completely
@Override
public void onPageFinished(WebView view, String url) {
if(pd.isShowing() && pd!=null)
{
pd.dismiss();
}
}
});
wv.setWebChromeClient(new WebChromeClient() {
// For Android 3.0+
public void openFileChooser( ValueCallback<Uri> uploadMsg, String acceptType ) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
MainActivity.this.startActivityForResult( Intent.createChooser( i, getString(R.string.fileselect) ), MainActivity.FILECHOOSER_RESULTCODE );
}
// For Android < 3.0
public void openFileChooser( ValueCallback<Uri> uploadMsg ) {
openFileChooser( uploadMsg, "" );
}
// For Android > 4.1
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
openFileChooser( uploadMsg, "" );
}
});
setContentView(wv);
}
}
PS:アップロード ボタンは私のコードで機能しています。問題は、ユーザーがアップロードを開始してアプリを終了した場合にアップロードが続行されるように、WebView をバックグラウンドでアクティブに保つ方法です。
更新:この場合、通知とともに戻るボタンをオーバーライドすると役立つと思います。