Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无wifi的位置感知应用程序崩溃_Java_Android_Maps - Fatal编程技术网

Java 无wifi的位置感知应用程序崩溃

Java 无wifi的位置感知应用程序崩溃,java,android,maps,Java,Android,Maps,现在我有一个带标记的简单地图。我认为我已经走到了死胡同,因为我无法识别问题(“当我加载应用程序时,应用程序意外崩溃”消息),但我在连接到wifi时尝试了该应用程序,效果非常好。如果我有数据连接,就会发生意外的崩溃 我已经完成了基本的android培训(),我的桌面上没有wifi,所以我只能访问数据连接。我知道我必须在try-catch块中检查internet连接,但如果我连接到网络,它还不应该工作吗 如果需要,我可以发布我的源代码,但我相信这是我的一个基本错误理解,而不是代码错误。因此,如果有人

现在我有一个带标记的简单地图。我认为我已经走到了死胡同,因为我无法识别问题(“当我加载应用程序时,应用程序意外崩溃”消息),但我在连接到wifi时尝试了该应用程序,效果非常好。如果我有数据连接,就会发生意外的崩溃

我已经完成了基本的android培训(),我的桌面上没有wifi,所以我只能访问数据连接。我知道我必须在try-catch块中检查internet连接,但如果我连接到网络,它还不应该工作吗

如果需要,我可以发布我的源代码,但我相信这是我的一个基本错误理解,而不是代码错误。因此,如果有人能透露一些情况,我将非常欢迎

MainActivity.java

package com.taveras.androidmapsv2;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesClient;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.location.LocationClient;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.IntentSender;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class MainActivity extends Activity implements
GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener{
private final static int CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000;
private static final int GPS_ERRORDIALOG_REQUEST = 9001;
private GoogleMap mMap;
private LocationClient mLocationClient;
private Location mCurrentLocation;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (servicesOK()) {
        Toast.makeText(this, "Ready to map!!", Toast.LENGTH_LONG).show();
        setContentView(R.layout.activity_main);
        setUpMapIfNeeded();
        mLocationClient = new LocationClient(this, this, this);

    } else {
        Toast.makeText(this, "An error has occurred", Toast.LENGTH_LONG).show();

    }
}
private void setUpMapIfNeeded() {
    // Do a null check to confirm that we have not already instantiated the map.
    if (mMap == null) {
        mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                            .getMap();
        // Check if we were successful in obtaining the map.
        if (mMap != null) {
            // The Map is verified. It is now safe to manipulate the map.

        }
    }
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    // TODO Auto-generated method stub
    /*
     * Google Play services can resolve some errors it detects.
     * If the error has a resolution, try sending an Intent to
     * start a Google Play services activity that can resolve
     * error.
     */
    if (connectionResult.hasResolution()) {
        try {
            // Start an Activity that tries to resolve the error
            connectionResult.startResolutionForResult(
                    this,
                    CONNECTION_FAILURE_RESOLUTION_REQUEST);
            /*
             * Thrown if Google Play services canceled the original
             * PendingIntent
             */
        } catch (IntentSender.SendIntentException e) {
            // Log the error
            e.printStackTrace();
        }
    } else {
        /*
         * If no resolution is available, display a dialog to the
         * user with the error.
         */
        //showErrorDialog(connectionResult.getErrorCode());
    }  
}
@Override
public void onConnected(Bundle arg0) {
    // TODO Auto-generated method stub
    Double lat = 0.0;
    Double lon = 0.0;
    Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
    mCurrentLocation = mLocationClient.getLastLocation();
    //lat = mCurrentLocation.getLatitude();
    //lon = mCurrentLocation.getLongitude();
    mMap.addMarker(new MarkerOptions()
    .position(new LatLng(lat, lon))
    .title("IM HERE"));
}
@Override
public void onDisconnected() {
    // TODO Auto-generated method stub
    Toast.makeText(this, "Disconnected. Please re-connect.",Toast.LENGTH_SHORT).show();
}
private void servicesConnected() {
    int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    if (errorCode != ConnectionResult.SUCCESS) {
        GooglePlayServicesUtil.getErrorDialog(errorCode, this, 0).show();
    }
}
/*
 * Called when the Activity becomes visible.
 */
protected void onStart() {
    super.onStart();
    // Connect the client.
    mLocationClient.connect();
    //
}
protected void onStop() {
    // Disconnecting the client invalidates it.
    mLocationClient.disconnect();
    super.onStop();
}
public boolean servicesOK() {

    int isAvailable = GooglePlayServicesUtil
            .isGooglePlayServicesAvailable(this);

    if (isAvailable == ConnectionResult.SUCCESS) {

        return true;

    } else if (GooglePlayServicesUtil.isUserRecoverableError(isAvailable)) {

        Dialog dialog = GooglePlayServicesUtil.getErrorDialog(isAvailable,
                this, GPS_ERRORDIALOG_REQUEST);
        dialog.show();

    } else {

        Toast.makeText(this, "Cant connect!!", Toast.LENGTH_SHORT).show();

    }
    return false;
}

}
xml:我知道这很懒惰,但我添加了所有可能的权限,只是为了检查这是否是问题所在

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.taveras.androidmapsv2"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="18" />
<permission
    android:name="com.taveras.androidmapsv2.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.taveras.androidmapsv2.permission.MAPS_RECEIVE" />
<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-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_HISTORY_BOOKMARKS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.SET_ALARM" />
<uses-permission android:name="android.permission.SET_ALWAYS_FINISH" />
<uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
<uses-permission android:name="android.permission.SET_DEBUG_APP" />
<uses-permission android:name="android.permission.SET_PROCESS_LIMIT" />
<uses-permission android:name="android.permission.SET_TIME_ZONE" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
<uses-permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES" />
<uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_READ" />
<uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_WRITE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.USE_SIP" />
 <uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_HISTORY_BOOKMARKS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/>
<uses-permission android:name="android.permission.PERSISTENT_ACTIVITY"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
<uses-permission android:name="android.permission.READ_PROFILE"/>
<uses-permission android:name="android.permission.READ_SOCIAL_STREAM"/>
<uses-permission android:name="android.permission.READ_USER_DICTIONARY"/>
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
<uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
<uses-permission android:name="android.permission.WRITE_PROFILE"/>
<uses-permission android:name="android.permission.WRITE_SOCIAL_STREAM"/>
<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY"/>
<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.taveras.androidmapsv2.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.gms.version"
        android:value="@integer/google_play_services_version"
        />
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AIzaSyDLKtTtTDxULNBvNLtGPvkEf6NNacs-42A" />
</application>

</manifest>

请发布有问题的代码。您的logcat应该准确地告诉您问题出在哪里。我还无法使用emulator处理与mapsLogcat相关的任何事情。即使您正在设备上测试,它也应该显示输出。把它挂起来,打开logcat标签。这会有很大帮助。我试着在模拟器上运行这个应用程序,出现了相同的错误,并提供了相关的logcat信息,但我无法理解。虽然我一辈子都不能让我的电脑识别我的手机,这就是为什么我还没有直接在上面测试的原因。当我得到另一根usb电缆时,将继续。
01-08 20:56:15.670: E/AndroidRuntime(1051): FATAL EXCEPTION: main
01-08 20:56:15.670: E/AndroidRuntime(1051): java.lang.RuntimeException: Unable to start activity         ComponentInfo{com.taveras.androidmapsv2/com.taveras.androidmapsv2.MainActivity}: java.lang.NullPointerException
01-08 20:56:15.670: E/AndroidRuntime(1051):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at android.os.Looper.loop(Looper.java:137)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at android.app.ActivityThread.main(ActivityThread.java:5041)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at java.lang.reflect.Method.invokeNative(Native Method)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at java.lang.reflect.Method.invoke(Method.java:511)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at dalvik.system.NativeStart.main(Native Method)
01-08 20:56:15.670: E/AndroidRuntime(1051): Caused by: java.lang.NullPointerException
01-08 20:56:15.670: E/AndroidRuntime(1051):     at com.taveras.androidmapsv2.MainActivity.onStart(MainActivity.java:119)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1164)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at android.app.Activity.performStart(Activity.java:5114)
01-08 20:56:15.670: E/AndroidRuntime(1051):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2153)
01-08 20:56:15.670: E/AndroidRuntime(1051):     ... 11 more