質問編集履歴

3 logcatの追加

退会済みユーザー

退会済みユーザー

2019/02/09 10:43  投稿

自作インターネットアプリが「停止しました」と表示されて起動できない
ご指摘お願いします。
```java
package com.android.internetbrowser;
import android.app.AlertDialog;
import android.app.DownloadManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.DownloadListener;
import android.webkit.URLUtil;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
   WebView webView = findViewById(R.id.webview);
   final private int INTENT_CODE = 101;
   private ValueCallback<Uri> mUploadMessage;
   Button go = findViewById(R.id.go);
   Button back = findViewById(R.id.back);
   EditText urlbar = findViewById(R.id.urlbar);
   ProgressBar progressBar = findViewById(R.id.progressBar);
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       if (savedInstanceState == null) {
           webView.loadUrl("https://www.google.com");
       }
       webView.getSettings().setJavaScriptEnabled(true);
       webView.getSettings().setUseWideViewPort(true);
       webView.getSettings().setLoadWithOverviewMode(true);
       webView.setVerticalScrollbarOverlay(true);
       webView.getSettings().setBuiltInZoomControls(true);
       webView.getSettings().setDomStorageEnabled(true);
       webView.setWebChromeClient(new WebChromeClient() {
           // /Android 4.1以上
           public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
               mUploadMessage = uploadMsg;
               Intent i = new Intent(Intent.ACTION_GET_CONTENT);
               i.addCategory(Intent.CATEGORY_OPENABLE);
               i.setType("image/*");
               startActivityForResult(Intent.createChooser(i, "画像選択"), INTENT_CODE);
           }
           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/*");
               startActivityForResult(Intent.createChooser(i, "画像選択"), INTENT_CODE);
           }
           // Android 3.0未満
           public void openFileChooser(ValueCallback<Uri> uploadMsg) {
               openFileChooser(uploadMsg, "", "");
           }
       });
       webView.setDownloadListener(new DownloadListener() {
           @Override
           public void onDownloadStart(String url, String userAgent,
                                       String contentDisposition, String mimetype,
                                       long contentLength) {
               DownloadManager.Request request = new DownloadManager.Request(
                       Uri.parse(url));
               request.allowScanningByMediaScanner();
               request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed!
               request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "Name of your downloadble file goes here, example: Mathematics II ");
               DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
               dm.enqueue(request);
               Toast.makeText(getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded
                       Toast.LENGTH_LONG).show();
           }
       });
       go.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               CharSequence url = urlbar.getText();
               if (url==""){
               }else{
                   webView.loadUrl(url.toString());
               }
           }
       });
       back.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
                       webView.goBack();
           }
       });
       webView.setWebViewClient(new WebViewClient(){
           @Override
           public void onPageFinished(WebView view,String url) {
               url = webView.getUrl();
               urlbar.setText(url, TextView.BufferType.NORMAL);
       }
       });
   }
   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
       if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
           if (webView.canGoBack()) {
               webView.goBack();
           } else {
               AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);
               // ダイアログの設定
               alertDialog.setTitle("確認");     //タイトル設定
               alertDialog.setMessage("終了しますか?"); //内容(メッセージ)設定
               // OK(肯定的な)ボタンの設定
               alertDialog.setPositiveButton("はい", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int which) {
                       finishAndRemoveTask();
                   }
               });
               alertDialog.setNeutralButton("いいえ", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int which) {
                   }
               });
               alertDialog.show();
           }
           return true;
       }
       return super.onKeyDown(keyCode, event);
   }
   @Override
   protected void onSaveInstanceState(Bundle outState) {
       super.onSaveInstanceState(outState);
       webView.saveState(outState);
   }
   @Override
   protected void onRestoreInstanceState(Bundle savedInstanceState) {
       super.onRestoreInstanceState(savedInstanceState);
       webView.restoreState(savedInstanceState);
   }
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
       if (requestCode == INTENT_CODE) {
           if (null == mUploadMessage) return;
           Uri result = (intent == null || resultCode != RESULT_OK) ? null : intent.getData();
           mUploadMessage.onReceiveValue(result);
           mUploadMessage = null;
       }
   }
   private class MyWebViewClient extends WebViewClient {
       @Override
       public void onPageStarted(WebView view, String url, android.graphics.Bitmap favicon) {
           super.onPageStarted(view, url, favicon);
           progressBar.setVisibility(View.VISIBLE);   // 読み込み開始時にプログレスバー表示
       }
       @Override
       public void onPageFinished(WebView view, String url) {
           super.onPageFinished(view, url);
           progressBar.setVisibility(View.GONE);      // 読み込み完了時にプログレスバー非表示
       }
   }
   protected class MyWebChromeClient extends WebChromeClient {
       public void onProgressChanged(WebView view, int progress) {
           progressBar.setProgress(progress);         // プログレスバーの進捗を更新
       }
   }
}
```
```logcat  
2019-02-09 10:40:20.272 604-617/system_process D/Sensors: batch handle 6, but there is no batch sensor in genymotion  
2019-02-09 10:40:20.279 604-827/system_process D/Sensors: batch handle 1, but there is no batch sensor in genymotion  
2019-02-09 10:40:20.282 604-649/system_process D/PressureSensor: pressure event 1013.000000  
2019-02-09 10:40:21.273 604-670/system_process W/WifiMode: WiredSSID, Invalid SupportedRates!!!  
2019-02-09 10:40:21.273 604-672/system_process W/WifiMode: WiredSSID, Invalid SupportedRates!!!  
2019-02-09 10:40:21.274 604-670/system_process W/WifiMode: WiredSSID, Invalid SupportedRates!!!  
2019-02-09 10:40:21.777 604-2123/system_process D/Sensors: batch handle 1, but there is no batch sensor in genymotion  
2019-02-09 10:41:43.460 604-618/system_process D/Sensors: batch handle 6, but there is no batch sensor in genymotion  
2019-02-09 10:41:43.470 604-649/system_process D/PressureSensor: pressure event 1013.000000  
 
```  
![](a59f123de0abbdc6212c5ced33bfe9fd.png)
  • Android

    10362 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

2 写真の追加

退会済みユーザー

退会済みユーザー

2019/02/09 10:35  投稿

自作インターネットアプリが「停止しました」と表示されて起動できない
ご指摘お願いします。
```java
package com.android.internetbrowser;
import android.app.AlertDialog;
import android.app.DownloadManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.DownloadListener;
import android.webkit.URLUtil;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
   WebView webView = findViewById(R.id.webview);
   final private int INTENT_CODE = 101;
   private ValueCallback<Uri> mUploadMessage;
   Button go = findViewById(R.id.go);
   Button back = findViewById(R.id.back);
   EditText urlbar = findViewById(R.id.urlbar);
   ProgressBar progressBar = findViewById(R.id.progressBar);
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       if (savedInstanceState == null) {
           webView.loadUrl("https://www.google.com");
       }
       webView.getSettings().setJavaScriptEnabled(true);
       webView.getSettings().setUseWideViewPort(true);
       webView.getSettings().setLoadWithOverviewMode(true);
       webView.setVerticalScrollbarOverlay(true);
       webView.getSettings().setBuiltInZoomControls(true);
       webView.getSettings().setDomStorageEnabled(true);
       webView.setWebChromeClient(new WebChromeClient() {
           // /Android 4.1以上
           public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
               mUploadMessage = uploadMsg;
               Intent i = new Intent(Intent.ACTION_GET_CONTENT);
               i.addCategory(Intent.CATEGORY_OPENABLE);
               i.setType("image/*");
               startActivityForResult(Intent.createChooser(i, "画像選択"), INTENT_CODE);
           }
           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/*");
               startActivityForResult(Intent.createChooser(i, "画像選択"), INTENT_CODE);
           }
           // Android 3.0未満
           public void openFileChooser(ValueCallback<Uri> uploadMsg) {
               openFileChooser(uploadMsg, "", "");
           }
       });
       webView.setDownloadListener(new DownloadListener() {
           @Override
           public void onDownloadStart(String url, String userAgent,
                                       String contentDisposition, String mimetype,
                                       long contentLength) {
               DownloadManager.Request request = new DownloadManager.Request(
                       Uri.parse(url));
               request.allowScanningByMediaScanner();
               request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed!
               request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "Name of your downloadble file goes here, example: Mathematics II ");
               DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
               dm.enqueue(request);
               Toast.makeText(getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded
                       Toast.LENGTH_LONG).show();
           }
       });
       go.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               CharSequence url = urlbar.getText();
               if (url==""){
               }else{
                   webView.loadUrl(url.toString());
               }
           }
       });
       back.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
                       webView.goBack();
           }
       });
       webView.setWebViewClient(new WebViewClient(){
           @Override
           public void onPageFinished(WebView view,String url) {
               url = webView.getUrl();
               urlbar.setText(url, TextView.BufferType.NORMAL);
       }
       });
   }
   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
       if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
           if (webView.canGoBack()) {
               webView.goBack();
           } else {
               AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);
               // ダイアログの設定
               alertDialog.setTitle("確認");     //タイトル設定
               alertDialog.setMessage("終了しますか?"); //内容(メッセージ)設定
               // OK(肯定的な)ボタンの設定
               alertDialog.setPositiveButton("はい", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int which) {
                       finishAndRemoveTask();
                   }
               });
               alertDialog.setNeutralButton("いいえ", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int which) {
                   }
               });
               alertDialog.show();
           }
           return true;
       }
       return super.onKeyDown(keyCode, event);
   }
   @Override
   protected void onSaveInstanceState(Bundle outState) {
       super.onSaveInstanceState(outState);
       webView.saveState(outState);
   }
   @Override
   protected void onRestoreInstanceState(Bundle savedInstanceState) {
       super.onRestoreInstanceState(savedInstanceState);
       webView.restoreState(savedInstanceState);
   }
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
       if (requestCode == INTENT_CODE) {
           if (null == mUploadMessage) return;
           Uri result = (intent == null || resultCode != RESULT_OK) ? null : intent.getData();
           mUploadMessage.onReceiveValue(result);
           mUploadMessage = null;
       }
   }
   private class MyWebViewClient extends WebViewClient {
       @Override
       public void onPageStarted(WebView view, String url, android.graphics.Bitmap favicon) {
           super.onPageStarted(view, url, favicon);
           progressBar.setVisibility(View.VISIBLE);   // 読み込み開始時にプログレスバー表示
       }
       @Override
       public void onPageFinished(WebView view, String url) {
           super.onPageFinished(view, url);
           progressBar.setVisibility(View.GONE);      // 読み込み完了時にプログレスバー非表示
       }
   }
   protected class MyWebChromeClient extends WebChromeClient {
       public void onProgressChanged(WebView view, int progress) {
           progressBar.setProgress(progress);         // プログレスバーの進捗を更新
       }
   }
}
```
```
![](a59f123de0abbdc6212c5ced33bfe9fd.png)
  • Android

    10362 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

1 追加しました

退会済みユーザー

退会済みユーザー

2019/02/09 10:32  投稿

インターネットアプリが落ちる
自作インターネットアプリが「停止しました」と表示されて起動できない
アプリが落ちるところが、分かりません。  
ご指摘お願いします。
```java
package com.android.internetbrowser;
import android.app.AlertDialog;  
import android.app.DownloadManager;
import android.content.DialogInterface;  
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.util.Log;  
import android.view.KeyEvent;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.DownloadListener;
import android.webkit.URLUtil;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
   WebView webView = findViewById(R.id.webview);
   final private int INTENT_CODE = 101;
   private ValueCallback<Uri> mUploadMessage;
   Button go = findViewById(R.id.go);
   Button back = findViewById(R.id.back);
   EditText urlbar = findViewById(R.id.urlbar);
   ProgressBar progressBar = findViewById(R.id.progressBar);
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       if (savedInstanceState == null) {
           webView.loadUrl("https://www.google.com");
       }
       webView.getSettings().setJavaScriptEnabled(true);
       webView.getSettings().setUseWideViewPort(true);
       webView.getSettings().setLoadWithOverviewMode(true);
       webView.setVerticalScrollbarOverlay(true);
       webView.getSettings().setBuiltInZoomControls(true);
       webView.getSettings().setDomStorageEnabled(true);
       webView.setWebChromeClient(new WebChromeClient() {
           // /Android 4.1以上
           public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
               mUploadMessage = uploadMsg;
               Intent i = new Intent(Intent.ACTION_GET_CONTENT);
               i.addCategory(Intent.CATEGORY_OPENABLE);
               i.setType("image/*");
               startActivityForResult(Intent.createChooser(i, "画像選択"), INTENT_CODE);
           }
           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/*");
               startActivityForResult(Intent.createChooser(i, "画像選択"), INTENT_CODE);
           }
           // Android 3.0未満
           public void openFileChooser(ValueCallback<Uri> uploadMsg) {
               openFileChooser(uploadMsg, "", "");
           }
       });
       webView.setDownloadListener(new DownloadListener() {
           @Override
           public void onDownloadStart(String url, String userAgent,
                                       String contentDisposition, String mimetype,
                                       long contentLength) {
               DownloadManager.Request request = new DownloadManager.Request(
                       Uri.parse(url));
               request.allowScanningByMediaScanner();
               request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed!
               request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "Name of your downloadble file goes here, example: Mathematics II ");
               DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
               dm.enqueue(request);
               Toast.makeText(getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded
                       Toast.LENGTH_LONG).show();
           }
       });
       go.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               CharSequence url = urlbar.getText();
               if (url==""){
               }else{
                   webView.loadUrl(url.toString());
               }
           }
       });
       back.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
                       webView.goBack();
           }
       });
       webView.setWebViewClient(new WebViewClient(){
           @Override
           public void onPageFinished(WebView view,String url) {
               url = webView.getUrl();
               urlbar.setText(url, TextView.BufferType.NORMAL);
       }
       });
   }
   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
       if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
           if (webView.canGoBack()) {
               webView.goBack();
           } else {
               AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);  
 
               // ダイアログの設定  
               alertDialog.setTitle("確認");     //タイトル設定  
               alertDialog.setMessage("終了しますか?"); //内容(メッセージ)設定  
 
               // OK(肯定的な)ボタンの設定  
               alertDialog.setPositiveButton("はい", new DialogInterface.OnClickListener() {  
                   public void onClick(DialogInterface dialog, int which) {  
                       finishAndRemoveTask();  
                   }  
               });  
 
               alertDialog.setNeutralButton("いいえ", new DialogInterface.OnClickListener() {  
                   public void onClick(DialogInterface dialog, int which) {  
                   }  
               });  
 
 
               alertDialog.show();  
           }
           return true;
       }
       return super.onKeyDown(keyCode, event);
   }
   @Override
   protected void onSaveInstanceState(Bundle outState) {
       super.onSaveInstanceState(outState);
       webView.saveState(outState);
   }
   @Override
   protected void onRestoreInstanceState(Bundle savedInstanceState) {
       super.onRestoreInstanceState(savedInstanceState);
       webView.restoreState(savedInstanceState);
   }
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
       if (requestCode == INTENT_CODE) {
           if (null == mUploadMessage) return;
           Uri result = (intent == null || resultCode != RESULT_OK) ? null : intent.getData();
           mUploadMessage.onReceiveValue(result);
           mUploadMessage = null;
       }
   }
   private class MyWebViewClient extends WebViewClient {
       @Override
       public void onPageStarted(WebView view, String url, android.graphics.Bitmap favicon) {
           super.onPageStarted(view, url, favicon);
           progressBar.setVisibility(View.VISIBLE);   // 読み込み開始時にプログレスバー表示
       }
       @Override
       public void onPageFinished(WebView view, String url) {
           super.onPageFinished(view, url);
           progressBar.setVisibility(View.GONE);      // 読み込み完了時にプログレスバー非表示
       }
   }
   protected class MyWebChromeClient extends WebChromeClient {
       public void onProgressChanged(WebView view, int progress) {
           progressBar.setProgress(progress);         // プログレスバーの進捗を更新
       }
   }
}
```
```
  • Android

    10362 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る