- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在将 Google map fragment 实现到我的 Android 应用程序时遇到了严重的问题。基本上,我遵循了谷歌网站上的所有说明。在获得 Google Maps API v2 key 、设置布局和 list 、导入 google-play-service 库并使用 google 的示例代码启动 GoogleMap 后,我发现模拟器不支持 Google Maps API v2,所以我上网并下载最新版本的 com.android.vending.apk 和 com.google.android.gms.apk,然后使用 adb install 将它们安装到我的模拟器中(与这里的情况相同:This app won't run unless you update Google Play Services (via Bazaar))。安装好之后,终于可以实现MapFragment的接口(interface)了。
但是当我在我的 Android 模拟器(OS 4.1.2;API 16)中运行它时, map 中的任何内容都不起作用。不断出现“无法找到 com.google.android.gsf.gservices 的提供商信息”的错误消息。我不确定它是否与无线提供商有关。有谁知道为什么它不断出现?任何建议将不胜感激!
为了解释之前的一些问题: map 显示正确。但是 map 上的按钮(“+”和“-”)根本不起作用。我也不能点击或拖动 map 。每当我单击任何按钮、在 map 上拖动或双击时,它都没有给我任何响应,而是在 LogCat 中显示错误消息“无法找到 com.google.android.gsf.gservices 的提供商信息”。
这是我在 AndroidManifest.xml 中的代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.trackmyexercise"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="12"
android:targetSdkVersion="17" />
<permission
android:name="com.example.trackmyexercise.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.trackmyexercise.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.trackmyexercise.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyANkR-VPI4zy5IpYGK2Z0T1omLq3C46rFE" />
</application>
</manifest>
这是我的布局代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/recordsButton"
android:layout_alignParentTop="true" />
</RelativeLayout>
这是我的 MainActivity 代码:
package com.example.trackmyexercise;
import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.view.Menu;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
public class MainActivity extends Activity {
GoogleMap myMap;
MapFragment myMapFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
myMapFragment = MapFragment.newInstance();
FragmentTransaction fragmentTransaction = getFragmentManager()
.beginTransaction();
fragmentTransaction.add(R.id.map, myMapFragment);
fragmentTransaction.commit();
myMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
this.setUpMapIfNeeded();
myMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private void setUpMapIfNeeded() {
if (myMap == null) {
myMap = ((MapFragment) getFragmentManager().findFragmentById(
R.id.map)).getMap();
if (myMap != null) {
}
}
}
}
最佳答案
错误就在这里 --> android:name="com.example.tackmyexercise.permission.MAPS_RECEIVE"
我想你的包名在这里不正确。
应该是 "com.example.trackmyexercise.permission.MAPS_RECEIVE"
关于android - 谷歌地图错误, "Failed to find provider info for com.google.android.gsf.gservices"和 "Failed to find provider info for com.google.settings",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15822836/
我在 C2DM 教程中找到的 GSF_PACKAGE 是什么? 准确地说: public static final String GSF_PACKAGE = "com.google.android.g
我最近在学习 Google Cloud Message,它需要 GSF 和 GMS(新名称是 Google Play Service,但不是那个 Google Play 应用程序)。我反编译了两者的代
我正在尝试使用新的 Google Cloud Messaging 系统,但遇到了一些问题。 我阅读了入门文档并查看了演示应用程序;之后,我将要求应用于我的应用程序,然后我使用 API 16 创建了一个
我发现它可以通过 java 完成 Uri URI = Uri.parse("content://com.google.android.gsf.gservices"); Play 商店中的许多应用程序都
我正在 Google Nexus 手机上测试我的应用程序。但它在启动过程中强制关闭,但出现异常“设备没有包 com.google.android.gsf”有什么提示吗? 我已经在 Samsung Ga
我需要唯一标识一台 Android 设备。我阅读了有关 ANDROID_ID 的信息,但它似乎与 Android 2.2 有问题。然后还有其他与 TelephonyManager 相关的标识符,但我认
Failed to find provider info for com.google.settings Failed to find provider info for com. google.a
我正在开发 Xamarin 跨平台应用程序,其中使用了 Google Cloud Messaging 服务。因此,当我调用以下方法时,出现异常“设备没有包 com.google.android.gsf
调用 GCM.register(this,SENDER_ID); 时抛出异常 java.lang.UnsupportedOperationException: 设备没有包 com.google.and
我使用的是 play services ads 10.2.6,它与安装的应用程序配合得很好。 这是堆栈跟踪: java.lang.SecurityException: Failed to find p
我在将 Google map fragment 实现到我的 Android 应用程序时遇到了严重的问题。基本上,我遵循了谷歌网站上的所有说明。在获得 Google Maps API v2 key 、设
我是一名优秀的程序员,十分优秀!