2013-12-18 6 views
0

Я понятия не имею, почему это исключение приходит, я просто проверяю, присутствует ли Интернет или нет. И если интернет присутствует, я открываю ссылку.Android: Облицовка java.lang.SecurityException только проверка наличия Интернета или нет

Странно, что я использовал тот же код в другом проекте, и он работал без проблем.

Кроме того, * Я уже дал разрешение Интернет в *

Вот мой код

package com.siddharth.empyrealrealty; 



import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.ProgressDialog; 
import android.content.DialogInterface; 
import android.graphics.Bitmap; 
import android.media.MediaPlayer; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.Menu; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Toast; 

public class Main extends Activity { 

WebView wv; 
ProgressDialog pg; 
Background bg; 
boolean isInternetPresent = false; 
AlertDialog.Builder alert; 
MediaPlayer exceptionNotifier; 
ConnectionDetector cd; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
// overridePendingTransition(R.anim.fadein, R.anim.fadeout); 
    setContentView(R.layout.activity_main); 

    alert = new AlertDialog.Builder(this); 
    cd = new ConnectionDetector(this); 

    try { 
     isInternetPresent = cd.isConnectingToInternet(); 
    } catch (Exception e) { 
     Toast.makeText(getApplicationContext(), e.toString(), 
       Toast.LENGTH_LONG).show(); 
    } 
    if(isInternetPresent){ 
    Toast.makeText(getApplicationContext(), "Loading... Please Wait..", Toast.LENGTH_LONG).show(); 

     wv=(WebView)findViewById(R.id.webView1); 

     bg = new Background(); 
     bg.execute(); 
    }else{ 
     exceptionNotifier = MediaPlayer.create(getApplicationContext(), R.raw.notify); 
     exceptionNotifier.start(); 
     alert.setTitle("Alert!"); 

     alert.setMessage("Internet Not Present..! "); 
     alert.setCancelable(true); 
     alert.setPositiveButton("Ok!", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, 
          int which) { 
         // TODO Auto-generated method stub 
         exceptionNotifier.release(); 

        } 
       }).show(); 

    } 

    } 

public void progress(){ 
    pg = new ProgressDialog(this); 
    pg.setTitle(""); 
    pg.setMessage("Please Wait........."); 
    pg.setCancelable(false); 
    pg.setIndeterminate(true); 
    pg.show(); 
} 

class Background extends AsyncTask<Void, Void, Void> 
{ 

    @SuppressLint("SetJavaScriptEnabled") 
    @Override 
    protected Void doInBackground(Void... arg0) { 
     // TODO Auto-generated method stub 


      try{ 
       wv.loadUrl("http://www.siddharth.uphero.com"); 
       }catch(Exception e){ 
        e.printStackTrace(); 
       } 

       wv.getSettings().setJavaScriptEnabled(true); 
       wv.getSettings().setLoadWithOverviewMode(true); 
       wv.getSettings().setUseWideViewPort(true); 
       wv.getSettings().setBuiltInZoomControls(true); 
       wv.setWebViewClient(new MyWebClient()); 


     return null; 
    } 
    @Override 
    protected void onPostExecute(Void result) { 




    } 

    @Override 
    protected void onPreExecute() { 

     progress(); 
    } 
} 
public class MyWebClient extends WebViewClient 
    { 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      // TODO Auto-generated method stub 
      super.onPageStarted(view, url, favicon); 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      // TODO Auto-generated method stub 

      view.loadUrl(url); 
      return true; 

     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      // TODO Auto-generated method stub 
     super.onPageFinished(view, url); 

        pg.dismiss(); 

     } 
    } 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 





} 

Heres код для ConnectionDetector класса

class ConnectionDetector { 

private Context _context; 

public ConnectionDetector(Context context){ 
    this._context = context; 
} 

public boolean isConnectingToInternet(){ 
    ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) 
     { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) 
       for (int i = 0; i < info.length; i++) 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) 
        { 
         return true; 
        } 

     } 
     return false; 
} 
} 
+1

Сообщение LogCat. –

+3

добавьте это разрешение и прочитайте свой журнал ... это вам поможет. '' – MAC

+0

Решение MAC решило вашу проблему .. – AndroidHacker

ответ

2

Проверить это разрешение в ваш файл манифеста и добавьте это, если вы еще не добавили его

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

Спасибо большое глупо мне .. спасибо за точечное решение –

0

Во-первых проверить для Manifest разрешения ...

<!-- Checks Internet Services. --> 
    <uses-permission android:name="android.permission.INTERNET" /> 

<!-- Network State Permissions to detect Internet status --> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

Else, если ваш телефон содержит двойной сим свойство попытайтесь обнаруживать соединение, как это .. выход

public boolean isConnectingToInternet(){ 

      boolean outcome = false; 


    if (getApplicationContext() != null) { 
     ConnectivityManager cm = (ConnectivityManager) getApplicationContext() 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 

     NetworkInfo[] networkInfos = cm.getAllNetworkInfo(); 

     for (NetworkInfo tempNetworkInfo : networkInfos) { 

      if (tempNetworkInfo.isConnected()) { 
       outcome = true; 
       break; 
      } 
     } 
    } 

    return outcome; 

    } 
+0

Спасибо, тоже слишком брода, но как я увидел выше ans перед урами, так что отметьте его как решение –

+0

Ничего ... .. но главный ответ был поставлен Mac .. проверьте комментарий к своему сообщению .. Где я спросил вас, если решение Mac решит вашу проблему. Убедитесь, что каждый раз, если вы используете двойной сим-смартфон, поскольку он препятствует вашей проверке качества подключения. CHEERS! – AndroidHacker

+0

Да, спасибо за то, что этот двойной сим-материал его классный:) ... Bdw Я новичок в SO, поэтому dun знает, как отметить этот комментарий как решение, так как там не существует галочки. –

Смежные вопросы