Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

αποφάσισα να φτιάξω μια εφαρμογή 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/κλασσικών φυλλομετρητών), η εφαρμογή δεν κάνει τίποτα. :fear:

 

Βρήκα αυτόν τον οδηγό, ο οποίος είναι επίσης λίγες γραμμές κώδικα διορθώνει το πρόβλημα:

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 μου). Απλά η λειτουργία ανεβάσματος αρχείων είναι σημαντική. :-)

 

Ευχαριστώ!

 

Δημοσ.

η openfilechooser που κάνει override έχει αλλάξει από έκδοση σε έκδοση του android

μόνο εικόνες θες να ανεβάζεις ή αρχεία γενικά?

 

ps επίσης μάλλον γ@μήθηκε γιατί δεν υπάρχει πια

http://code.google.com/p/android/issues/detail?id=62220

Δημοσ.

Ναι, εικόνες μας ενδιαφέρει να ανεβάσουμε στη παρούσα φάση.

 

Δηλαδή θα υπάρχει πρόβλημα συμβατότητας ανα έκδοση Android ε?

Δημοσ.

αν δεις το link την γράφει 3 φορές για τις διαφορετικές εκδόσεις

αλλά δεν τρέχει σε 4.4, και απαντάει developer οτι την βγάλανε και θα την φτιάξουν σε επόμενη έκδοση

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...