עזרה דחופה באפליקציה היברידית

4 views
Skip to first unread message

סגל איתי

unread,
Jun 5, 2013, 7:34:47 AM6/5/13
to hit-php-...@googlegroups.com
שלום חברים!!

אני נמצא בעיצומו של פיתוח אפליקציה לאנדרואיד, מבוססת webview ומושכת אתר של וורפרס.

יש לי שתי בעיות פשוטות, שכל אחד מכם קרוב לוודאי ייתקל בהן במידה ויפתח אפליקציה פשוטה שכזו - 

- כאשר לוחצים על לינק שאמור להוביל לאתר אחר חיצוני שלא קשור לאפליקציה, הייתי רוצה שייפתח הדפדפן ולא שהאתר ייפתח בתוך ה webview.
איך עושים את זה?

- כאשר לוחצים על כפתור אחורה במכשיר, הייתי רוצה שהwebview ייקח אותי דף אחד אחורה בהיסטוריה שלו.
איך עושים את זה?

יש לי את הקוד לפיתרון שתי הבעיות, אבל אין לי את הידע להבין מה אני עושה לא בסדר, כי זה לא עובד....
אשמח אם תוכלו לעזור!!

תודה,

איתי סגל


package com.isegal.iati_biomed;

import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.provider.Settings;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;


public class MainActivity extends Activity {
WebView webview;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   //webview use to call own site
   webview = (WebView)findViewById(R.id.webView);
   webview.setWebViewClient(new MyWebViewClient());  
   webview.getSettings().setJavaScriptEnabled(true);
   webview.getSettings().getJavaScriptCanOpenWindowsAutomatically();
   webview.clearView();
   webview.loadUrl("http://82.80.209.42/~israelex/loader"); 
   
   if (!isNetworkAvailable())
    {
       
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setMessage(R.string.no_connection);
builder.setTitle(R.string.no_connection_title);
builder.setPositiveButton(R.string.settings_button_text, new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
}
});
builder.setNegativeButton(R.string.cancel_button_text, new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
Toast.makeText(MainActivity.this, "Exit",
Toast.LENGTH_SHORT).show();
return;
}
});
builder.show();
   
    }
   
   

}
private boolean isNetworkAvailable() {
   ConnectivityManager connectivityManager 
         = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
   return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
class MyWebViewClient extends WebViewClient {
   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String url) {
       if(url.contains("external")){ // Could be cleverer and use a regex
           return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
       } else {
           view.loadUrl(url); // Stay within this webview and load url
           return true;
       }
   }
}
class backPressed extends MainActivity {
@Override
public void onBackPressed()
{
   if(webview.canGoBack())
    webview.goBack();
   else
       super.onBackPressed();
}
}
}


Reply all
Reply to author
Forward
0 new messages