2012-03-23 4 views
2

J'ai une application jqueryMobile qui utilise google maps api et fonctionne correctement sur iOS. Cependant, je ne suis pas capable de le faire fonctionner sur android. J'ai défini les autorisations suivantes sur mon fichier manifeste. Le fichier est chargé correctement mais je ne suis pas en mesure de voir la carte! En supposant que le code de jqmobile fonctionne parce que fonctionne sur iOS, comment l'activer ou quelles étapes sont nécessaires? Je vous remercie.android google maps sur un webview

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 
    <uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" /> 

ma classe WebView ressemble,

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.webview); 

     browse4 = (WebView) findViewById(R.id.webview1); 
     browse4.getSettings().setJavaScriptEnabled(true); 
     browse4.getSettings().setUseWideViewPort(true); 
     browse4.getSettings().setLoadWithOverviewMode(true); 
     browse4.getSettings().setBuiltInZoomControls(true); 
     browse4.getSettings().setSupportZoom(true); 

     browse4.loadUrl("file:///data/data/" + PACKAGE_NAME + "/files/" + "myMap.html"); 

    } 
+0

Comment obtenez-vous votre fichier html dans vos fichiers dir? Peut-être est-il corrompu pendant ce processus? Essayez de déposer dans une page html simple avec juste du texte dessus et voir si le WebView montre votre code HTML de cette façon. – FoamyGuy

+0

html n'a aucune erreur. Vérifié à nouveau. Également testé à partir du serveur distant en utilisant Android et iOS et pour iOS fonctionne. – Jaume

Répondre

1

est-il une raison particulière pour laquelle vous ne l'utilisez Google MapView?

Je comprends qu'il utilise jQuery mais ce pourrait être être plus facile.

+0

oui, pour certaines raisons, j'ai besoin d'utiliser un webView.Cela devrait être une tâche facile ... Vraiment c'est sur iOS mais ce problème me rend fou sur android ... – Jaume

+0

Il est bon que vous ayez défini javaScriptEnabled (true) en premier, mais cela peut avoir quelque chose à voir avec jqmobile.Si c'est spécifique à iOS, qu'est-ce que c'est? le javascript, causant le reste de la page à ne pas initialiser correctement – twig

+0

quelle était la solution au problème? je dois porter mon application Android MapView centric pour utiliser un webView avec google maps chargé dedans afin que je puisse essayer de reconditionner mon APK en tant que barre de blackberry. – topwik

0

est peut-être une réponse stupide, mais avez-vous dans votre manifeste?

<uses-library android:name="com.google.android.maps" /> 
+0

déjà ajouté au manifeste :( – Jaume

+0

Cela valait le coup, je sais que j'ai fait cette erreur avant – testingtester

0

Ok try this

Créez un nouveau projet en utilisant l'API Google et essayez ceci.

package com.ab1209.webview; 

import android.app.Activity; 
import android.content.Context; 
import android.content.pm.ActivityInfo; 
import android.location.Criteria; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class WebMapActivity extends Activity implements LocationListener 
{ 
    private static final String MAP_URL = "http://gmaps-samples.googlecode.com/svn/trunk/articles-android-webmap/simple-android-map.html"; 
    private WebView webView; 

    Location mostRecentLocation; 

    @Override 
    /** Called when the activity is first created. */ 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     getLocation(); 
     setupWebView(); 
     this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    } 

    private void getLocation() 
    { 
     LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     Criteria criteria = new Criteria(); 
     criteria.setAccuracy(Criteria.ACCURACY_FINE); 
     String provider = locationManager.getBestProvider(criteria, true); 
     // In order to make sure the device is getting the location, request 
     // updates. 
     locationManager.requestLocationUpdates(provider, 1, 0, this); 
     mostRecentLocation = locationManager.getLastKnownLocation(provider); 
    } 

    @Override 
    public void onLocationChanged(Location arg0) 
    { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderDisabled(String provider) 
    { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderEnabled(String provider) 
    { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) 
    { 
     // TODO Auto-generated method stub 

    } 

    /** Sets up the WebView object and loads the URL of the page **/ 
    private void setupWebView() 
    { 
     final String centerURL = "javascript:centerAt(" + mostRecentLocation.getLatitude() + "," + mostRecentLocation.getLongitude() + ")"; 
     webView = (WebView) findViewById(R.id.webview); 
     webView.getSettings().setJavaScriptEnabled(true); 
     // Wait for the page to load then send the location information 
     webView.setWebViewClient(new WebViewClient()); 
     webView.loadUrl(MAP_URL); 
     /** Allows JavaScript calls to access application resources **/ 
     webView.addJavascriptInterface(new JavaScriptInterface(), "android"); 
    } 

    /** 
    * Sets up the interface for getting access to Latitude and Longitude data 
    * from device 
    **/ 
    private class JavaScriptInterface 
    { 
     public double getLatitude() 
     { 
      return mostRecentLocation.getLatitude(); 
     } 

     public double getLongitude() 
     { 
      return mostRecentLocation.getLongitude(); 
     } 
    } 
} 

S'il vous plaît vérifier aussi this .Je eu le même problème il est maintenant résolu.

0

Vous ne pouvez pas accéder au fichier comme ça. Vous devez le mettre dans votre dossier assets, puis y accéder avec file:///android_asset/file_name.html. Vous pouvez accéder directement au dossier /data/data directement si vous avez un accès root.