0

私はアンドロイドでWebViewアプリケーションを開発しています。それはアンドロイドLollipopまたはそれより低いバージョンでうまく動作します。しかし、私がMarshmallowで同じアプリケーションを実行しようとすると、「残念なことに停止しました」というエラーが表示されます。残念ながら、私のWebviewアプリはMarshmallowで停止しました

注:自分のコードで質問を更新しました。

これは私のマニフェストページです。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.xamarin.gcmexample"> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="com.xamarin.gcmexample.permission.C2D_MESSAGE" /> 
    <permission 
     android:name="com.xamarin.gcmexample.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 
    <!-- To auto-complete the email text field in the login form with the user's emails --> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.READ_PROFILE" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".Main" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <service 
      android:name=".InstanceIdListenerService" 
      android:exported="false"> 
      <intent-filter> 
       <action android:name="com.google.android.gms.iid.InstanceID" /> 
      </intent-filter> 
     </service> 
     <service 
      android:name=".RegistrationIntentService" 
      android:exported="false"></service> 
     <service 
      android:name=".MyGcmListenerService" 
      android:exported="false"> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      </intent-filter> 
     </service> 
     <receiver 
      android:name="com.google.android.gms.gcm.GcmReceiver" 
      android:exported="true" 
      android:permission="com.google.android.c2dm.permission.SEND"> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
       <category android:name="com.xamarin.gcmexample" /> 
      </intent-filter> 
     </receiver> 
     <activity 
      android:name=".Login" 
      android:label="@string/title_activity_login"></activity> 
    </application> 
</manifest> 

これは

apply plugin: 'com.android.application' 
android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 
    defaultConfig { 
     applicationId "com.xamarin.gcmexample" 
     minSdkVersion 11 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.2.1' 
    compile 'com.android.support:design:23.2.1' 
    compile 'com.google.android.gms:play-services:8.4.0' 
} 

build.gradleファイルであり、これはあなたが

webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new MyWebViewClient()); 
    webView.loadUrl("your url link"); 

としてあなたの活動ののonCreate内でこれを行うことができます主な活動

package com.xamarin.gcmexample; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.graphics.Bitmap; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.GoogleApiAvailability; 
import android.telephony.TelephonyManager; 
import android.view.View; 
import android.webkit.JavascriptInterface; 
import android.webkit.WebResourceError; 
import android.webkit.WebResourceRequest; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 
import java.util.logging.Logger; 
public class Main extends AppCompatActivity { 
    WebView mWebView; 
    Logger LOGGER; 
    Button btnlogout; 
    TextView lblname; 
    private static Main mContext; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     try { 
      setContentView(R.layout.main); 
      mWebView = (WebView) findViewById(R.id.activity_main_webview); 
      btnlogout = (Button) findViewById(R.id.btnlogout); 
      LOGGER = Logger.getLogger(RegistrationIntentService.class.getName()); 
      lblname = (TextView) findViewById(R.id.lblname); 
      int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(Main.this); 
      final Intent intentlogin = new Intent(this, Login.class);   
      if(isNetworkAvailable()) { 
       WebSettings webSettings = mWebView.getSettings(); 
       webSettings.setJavaScriptEnabled(true); 
       mWebView.addJavascriptInterface(new MyJavaScriptInterface(this), "Android"); 
       mWebView.setWebViewClient(new MyWebViewClient(this)); 
       mContext = Main.this; 
       TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
       String id = telephonyManager.getDeviceId(); 
       if (resultCode == ConnectionResult.SUCCESS) { 
        lblname.setText("Michael");        
        mWebView.loadUrl("https://m.facebook.com?imei="+id); 
        LOGGER.info("After LoadUrl "); 
       } else { 
        LOGGER.info("Google Play Services is not Available "); 
        Toast toast = Toast.makeText(getApplicationContext(), "Google Play Services is not Available", Toast.LENGTH_LONG); 
        toast.show(); 
       } 
      } 
      else 
      { 
       Toast toast = Toast.makeText(getApplicationContext(), "Internet is not Available", Toast.LENGTH_LONG); 
       toast.show(); 
       lblname.setText("No Internet"); 
      } 
      btnlogout.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        LOGGER.info(" startService(intent);"); 
        startActivity(intentlogin); 
       } 
      }); 
     }catch(Exception ex) 
     { LOGGER.info(" mWebView:"+ex.getMessage()); 
      return; 
     } 
    } 
    @Override 
    protected void onResume() { 
     super.onResume(); 
     setContentView(R.layout.main); 
     mWebView = (WebView) findViewById(R.id.activity_main_webview); 
     btnlogout = (Button) findViewById(R.id.btnlogout); 
     lblname=(TextView)findViewById(R.id.lblname); 
     LOGGER = Logger.getLogger(RegistrationIntentService.class.getName()); 
     final Intent intentlogin = new Intent(this, Login.class); 
     int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(Main.this);  
     if(isNetworkAvailable()) { 
      WebSettings webSettings = mWebView.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      mWebView.addJavascriptInterface(new MyJavaScriptInterface(this), "Android"); 
      mWebView.setWebViewClient(new MyWebViewClient(this)); 
      mContext = Main.this; 
      TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
      String id = telephonyManager.getDeviceId(); 
      if (resultCode == ConnectionResult.SUCCESS) { 
       lblname.setText("Michael"); 
       mWebView.loadUrl("https://m.facebook.com?imei="+id); 
       LOGGER.info("After LoadUrl "); 
      } else { 
       LOGGER.info("Google Play Services is not Available "); 
       Toast toast = Toast.makeText(getApplicationContext(), "Google Play Services is not Available", Toast.LENGTH_LONG); 
       toast.show(); 
      } 
     } 
     else 
     { 
      Toast toast = Toast.makeText(getApplicationContext(), "Internet is not Available", Toast.LENGTH_LONG); 
      toast.show(); 
      lblname.setText("No Internet"); 
     } 
     btnlogout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       LOGGER.info(" startService(intent);"); 
       startActivity(intentlogin); 
      } 
     }); 
    } 

    public boolean isNetworkAvailable() { 
     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo = cm.getActiveNetworkInfo();   
     if (networkInfo != null && networkInfo.isConnected()) { 
      return true; 
     } 
     return false; 
    } 
} 

class MyWebViewClient extends WebViewClient { 
    private Context context; 
    public MyWebViewClient(Context con) 
    { 
     this.context=con; 
    } 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) {  
     view.loadUrl(url); 
     return true; 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
    } 

    @Override 
    public void onReceivedError (WebView view, WebResourceRequest request, WebResourceError error) { 
     super.onReceivedError(view, request, error);  
    } 
} 

class MyJavaScriptInterface { 
    Activity activity; 
    MyJavaScriptInterface(Activity activity) { 
     this.activity = activity; 
    } 

    @JavascriptInterface 
    public void showToast(String toast) { 
     Toast.makeText(activity, "On Javascript showtoast() "+toast, Toast.LENGTH_LONG).show(); 
    } 

    @JavascriptInterface 
    public void closeActivity() { 
     activity.finish(); 
    } 
} 
+0

お試しくださいhttp://www.gammerson.com/2015/10/fixed-unfortunately-app-has-stopped-marshmallow.html –

+0

@SathishKumarJ動作しませんでした。 –

+0

あなたのコードを表示してください@Manas – Lampard

答えて

0

されており、

private class MyWebViewClient extends WebViewClient{ 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     webView.loadUrl("your url link"); 
     return true; 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
     ....code here 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     .... code here 
    } 

    @Override 
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { 
     super.onReceivedError(view, request, error); 
     ,.....code here 
    } 
} 

ご希望の場合はお手数ですが、

+0

私に思い出させてくれてありがとう、私はすでに上記の手順を使用しています。 –

関連する問題