0

我正在从事没有任何活动的服务。它只在后台工作。它接收纬度和经度并通过邮件发送。问题是程序没有发送邮件,我使用的是 Java Mail API。这是代码:

这是主要活动

public class MainActivity extends Service {

    LocationManager lm;
    LocationListener lis;
    Location loc;
    Double lat;
    Double lan;
    Location location;
    private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1; // in Meters
    private static final long MINIMUM_TIME_BETWEEN_UPDATES = 10000; // in Milliseconds
 LocationManager locationManager;



    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onStart(Intent intent, int startId) {
        // TODO Auto-generated method stub
        super.onStart(intent, startId);

        locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

        locationManager.requestLocationUpdates(
                                    LocationManager.GPS_PROVIDER,
                                    MINIMUM_TIME_BETWEEN_UPDATES,
                                    MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
                                new MyLocationListener()
                        );



        sendMail( showcurrentlocation());



    }


    private String showcurrentlocation() {
        // TODO Auto-generated method stub
        Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        String message = null;
        if (location != null) {
 message = String.format(
                                "Current Location \n Longitude: %1$s \n Latitude: %2$s",
                                location.getLongitude(), location.getLatitude()
                            );

                    }


return message;

    }

    public void sendMail(String msg) {
        try {
            GMailSender sender = new GMailSender("user",
                    "password");
            sender.sendMail("subject",body, "sender",
                    "recepients");
        } catch (Exception e) {
            Log.e("SendMail", e.getMessage(), e);
        }

    }

    private class MyLocationListener implements LocationListener {

                public void onLocationChanged(Location location) {
                   String message = String.format(
                        "New Location \n Longitude: %1$s \n Latitude: %2$s",
                            location.getLongitude(), location.getLatitude()

                           );

                   Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
                }

                public void onStatusChanged(String s, int i, Bundle b) {
                    Toast.makeText(MainActivity.this, "Provider status changed",
                        Toast.LENGTH_LONG).show();
                    }

                public void onProviderDisabled(String s) {
              Toast.makeText(MainActivity.this,
                                "Provider disabled by the user. GPS turned off",
                        Toast.LENGTH_LONG).show();
                    }

                    public void onProviderEnabled(String s) {
                    Toast.makeText(MainActivity.this,
                            "Provider enabled by the user. GPS turned on",
                                Toast.LENGTH_LONG).show();
                }

        }




}

另一个类是广播接收器

public class MyBroadcastReceiver extends BroadcastReceiver{

    public static final String TAG = "LocationLoggerServiceManager";

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

        Intent service = new Intent(context, MainActivity.class);
        context.startService(service);

        }

}public class MyBroadcastReceiver extends BroadcastReceiver{

    public static final String TAG = "LocationLoggerServiceManager";

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

        Intent service = new Intent(context, MainActivity.class);
        context.startService(service);

        }

}
4

1 回答 1

0

无需为此编写广播接收器。如果您提及要更新位置的距离/时间,Android 会提供更新的位置。请检查您的位置更改后是否调用 sendMail() 的天气。

于 2012-07-17T12:00:19.997 回答