0

Ich entwickle eine WebView-Anwendung in Android. Es funktioniert gut in Android Lollipop oder es ist niedrigere Versionen. Aber wenn ich versuche, die gleiche Anwendung in Marshmallow zu starten, gibt es den Fehler "Leider gestoppt".Leider hat meine Webview App in Marshmallow gestoppt

Hinweis: Ich habe die Frage mit meinem Code aktualisiert.

Dies ist meine Manifest-Seite.

<?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> 

Dies ist build.gradle Datei

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' 
} 

Und das ist Haupttätigkeit

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

versuchen Sie dies http://www.gammerson.com/2015/10/fixed-unhelden-app-has-stopped-marshmallow.html –

+0

@SathishKumarJ Es hat nicht funktioniert. –

+0

Bitte zeigen Sie Ihren Code @Manas – Lampard

Antwort

0

Sie können dies als

Ihrer Tätigkeit innerhalb onCreate tun
webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new MyWebViewClient()); 
    webView.loadUrl("your url link"); 

Und dann

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 
    } 
} 

Ich hoffe, es kann Ihnen helfen.

+0

Vielen Dank für Ihre Erinnerung an mich, ich habe bereits das obige Verfahren verwendet. –

Verwandte Themen