philos Δημοσ. 29 Ιανουαρίου 2014 Δημοσ. 29 Ιανουαρίου 2014 Καλησπέρα, αποφάσισα να φτιάξω μια εφαρμογή Android για την ιστοσελίδα μου. Αυτό που κάνει ουσιαστικά η εφαρμογή είναι να χρησιμοποιεί τον WebViewer του Android και όταν η εφαρμογή συνδέεται με το site, αυτό της εμφανίζει μια Mobile έκδοση (skin). Χρησιμοποίησα αυτόν τον οδηγό, ο οποίος είναι λίγες γραμμές Java: import android.os.Bundle; import android.annotation.SuppressLint; import android.app.Activity; import android.view.KeyEvent; import android.webkit.WebSettings; import android.webkit.WebSettings.PluginState; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { WebView myWebView; @SuppressWarnings("deprecation") @SuppressLint("SetJavaScriptEnabled") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); //Enables Javascript. Remove this line if your site doesn't require javascript myWebView.getSettings().setPluginState(PluginState.ON); //Enables plugins like Adobe flash. Remove if not required myWebView.loadUrl("http://samadmalik.com"); //Change this with your website's url myWebView.setWebViewClient(new myWebViewClient()); } private class myWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return false; } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK){ if(myWebView.canGoBack()){ myWebView.goBack(); return true; } } return super.onKeyDown(keyCode, event); } } Λειτουργεί μια χαρά, απλά υπάρχει το εξής πρόβλημα: όταν πατάω να ανεβάσω κάποιο αρχείο μέσω της εφαρμογής (δλδ το αντίστοιχο "Browse files..." των Windows/κλασσικών φυλλομετρητών), η εφαρμογή δεν κάνει τίποτα. Βρήκα αυτόν τον οδηγό, ο οποίος είναι επίσης λίγες γραμμές κώδικα διορθώνει το πρόβλημα: public class MyAwesomeActivity extends Activity { private WebView wv; private ValueCallback<Uri> mUploadMessage; private final static int FILECHOOSER_RESULTCODE=1; @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if(requestCode==FILECHOOSER_RESULTCODE) { if (null == mUploadMessage) return; Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData(); mUploadMessage.onReceiveValue(result); mUploadMessage = null; } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); wv = new WebView(this); wv.setWebViewClient(new WebViewClient()); wv.setWebChromeClient(new WebChromeClient() { //The undocumented magic method override //Eclipse will swear at you if you try to put @Override here public void openFileChooser(ValueCallback<Uri> uploadMsg) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); MyAwesomeActivity.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE); } }); setContentView(wv); } ... μπορεί κάποιος να συνδυάσει τους δύο κώδικες ώστε να δουλέψει η δυνατότητα ανεβάσματος αρχείων? Δεν γνωρίζω Java και η εφαρμογή που φτιάχνω δεν είναι κάτι πολύπλοκο (απλά εμφανίζει το site μου). Απλά η λειτουργία ανεβάσματος αρχείων είναι σημαντική. Ευχαριστώ!
warlock9_0 Δημοσ. 29 Ιανουαρίου 2014 Δημοσ. 29 Ιανουαρίου 2014 η openfilechooser που κάνει override έχει αλλάξει από έκδοση σε έκδοση του android μόνο εικόνες θες να ανεβάζεις ή αρχεία γενικά? ps επίσης μάλλον γ@μήθηκε γιατί δεν υπάρχει πια http://code.google.com/p/android/issues/detail?id=62220
philos Δημοσ. 29 Ιανουαρίου 2014 Μέλος Δημοσ. 29 Ιανουαρίου 2014 Ναι, εικόνες μας ενδιαφέρει να ανεβάσουμε στη παρούσα φάση. Δηλαδή θα υπάρχει πρόβλημα συμβατότητας ανα έκδοση Android ε?
warlock9_0 Δημοσ. 29 Ιανουαρίου 2014 Δημοσ. 29 Ιανουαρίου 2014 αν δεις το link την γράφει 3 φορές για τις διαφορετικές εκδόσεις αλλά δεν τρέχει σε 4.4, και απαντάει developer οτι την βγάλανε και θα την φτιάξουν σε επόμενη έκδοση
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα