2012-03-23 2 views
2

У меня есть приложение jqueryMobile, которое использует google maps api и работает правильно на iOS. Тем не менее, я не могу заставить его работать на Android. Я установил следующие разрешения для моего файла манифеста. Файл загружен правильно, но я не могу просмотреть карту! Предполагая, что jqmobile-код работает, потому что работает в iOS, как его включить или какие шаги необходимы? Спасибо.android google maps on 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" /> 

мой класс WebView выглядит,

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

Как вы получаете свой html-файл в файлы dir? возможно, он поврежден во время этого процесса? Попробуйте зайти на простой html-странице с помощью всего лишь некоторого текста на нем и посмотреть, показывает ли WebView ваш html таким образом. – FoamyGuy

+0

html не имеет ошибок. Проверено еще раз. Также протестирован с удаленного сервера с использованием Android и iOS и для работы с iOS. – Jaume

ответ

1

есть какая-либо конкретная причина, почему вы не используете Google MapView?

Я понимаю, что это использование jQuery, но это может быть проще.

+0

Да, по некоторым причинам мне нужно использовать webView. Должна быть простая задача ... Действительно, это на iOS, но эта проблема сводит меня с ума от андроида ... – Jaume

+0

Хорошо, что вы запускали setJavaScriptEnabled (true), но это может иметь какое-то отношение к jqmobile. Если это спецификация iOS, что это такое? Возможно, это может быть ошибка в javascript, в результате чего остальная часть страницы не была правильно инициализирована. – twig

+0

Каково было решение проблемы? Мне нужно перенести мое приложение Android с ориентированным ориентиром в mapView, чтобы использовать webView с загруженными в него картами Google, чтобы я мог попытаться переупаковать мои APK как Blackberry BAR. – topwik

0

Может быть немой ответ, но у вас есть это в манифесте?

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

уже добавлен в манифест :( – Jaume

+0

Это было ценно, я знаю, что сделал ошибку до – testingtester

0

ОК попробуйте это

Создайте новый проект с использованием API Google и попробуйте это.

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(); 
     } 
    } 
} 

Пожалуйста, проверьте this .Я была такая же проблема сейчас решается.

0

Вы не можете получить доступ к этому файлу. Вы должны поместить его в свою папку assets, а затем получить его с помощью file:///android_asset/file_name.html. Вы можете получить доступ только к папке /data/data, если у вас есть root-доступ.