Java Android:接收短信和gps的过程中出现问题

Java Android:接收短信和gps的过程中出现问题,java,android,gps,sms,Java,Android,Gps,Sms,在我的仿真器中,我的程序安装成功,但当我从另一个仿真器发送sms以触发程序、运行gps程序并将位置发送回发送sms触发器的另一个仿真器时,将停止处理 这是代码请帮我 package feliks.skripsi; import android.app.PendingIntent; import android.os.Bundle; import android.content.BroadcastReceiver; import android.content.Context; import

在我的仿真器中,我的程序安装成功,但当我从另一个仿真器发送sms以触发程序、运行gps程序并将位置发送回发送sms触发器的另一个仿真器时,将停止处理 这是代码请帮我

package feliks.skripsi;

import android.app.PendingIntent;
import android.os.Bundle;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.Criteria;

import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.util.Log;

public class SmsIntentReceiver extends BroadcastReceiver {
    /** Called when the activity is first created. */
    double lat, lon;

    Context context;

        public void triggerApp (Context context){
        Intent broadcast = new Intent ("feliks.skripsi.WAKE_UP");
        broadcast.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity (new Intent(broadcast));
    }


    public void getLocation(){
        //Location loc;

        //LocationProvider locPro;
        //List<LocationProvider> proList;

        //setContentView(R.layout);

        LocationManager lm;


    lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);

    Criteria criteria = new Criteria();
    criteria.setAccuracy (Criteria.ACCURACY_FINE);
    criteria.setAltitudeRequired(false);
    criteria.setBearingRequired(false);
    criteria.setCostAllowed(true);
    criteria.setPowerRequirement(Criteria.POWER_LOW);

    String provider = lm.getBestProvider(criteria, true);

    Location location = lm.getLastKnownLocation(provider);

    updateWithNewLocation(location);

    lm.requestLocationUpdates(provider, 2000, 20, locationListener);    
    }

private final LocationListener locationListener = new LocationListener(){   
    public void onLocationChanged (Location location){
        updateWithNewLocation(location);
    }

    private void updateWithNewLocation(Location location) {
        // TODO Auto-generated method stub

    }

    public void onProviderDisabled (String provider){
        updateWithNewLocation(null);
    }

    public void onProviderEnabled (String provider) {

    }
    public void onStatusChanged (String provider, int status, Bundle extras){

    }

};

private void updateWithNewLocation(Location location) {
    // TODO Auto-generated method stub
    if (location != null){
        lat = location.getLatitude();
        lon = location.getLongitude();
    }

}

private void sendGPSData (Context context, Intent intent, SmsMessage inMessage){

    String sendData = "Loc: lat: "+lat+"long: "+lon;
    SmsManager mng = SmsManager.getDefault();
    PendingIntent dummyEvent = PendingIntent.getBroadcast(context, 0, new Intent("feliks.skripsi.IGNORE_ME"), 0);

    String addr = inMessage.getOriginatingAddress();
    if (addr ==null)

    {Log.i("SmsIntent", "Unable to receive Phone Number from Sent message");}

    try{
        mng.sendTextMessage(addr, null, sendData, dummyEvent, dummyEvent);
    }catch(Exception e){
        Log.e("SmsIntent", "SendException", e);
    }

}

private SmsMessage[] getMessagesFromIntent (Intent intent){

    SmsMessage retMsgs[] = null;
    Bundle bdl = intent.getExtras();
    try{
        Object[] pdus = (Object[]) bdl.get("pdus");
        retMsgs = new SmsMessage[pdus.length];
        for (int n=0; n <pdus.length; n++)
        {
            byte[] byteData = (byte[])pdus[n];
            retMsgs[n] = SmsMessage.createFromPdu(byteData);
    }
}catch (Exception e)
{
    Log.e("GetMessages", "fail", e);
}
return retMsgs;
}

@Override
public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        if (!intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
        {
            return;
        }
        SmsMessage msg[] = getMessagesFromIntent (intent);
        for (int i=0; i<msg.length; i++)
        {
            String message = msg[i].getDisplayMessageBody();
            if(message != null && message.length() >0)
            {
                Log.i("MessageListner:", message);
                //trigger message
                if (message.startsWith("SMSTrigger: Start Aplikasi "))
                {
                    triggerApp(context);
                }
                else if (message.startsWith("LBSLocatorOn"))
                {
                    getLocation();
                    sendGPSData(context, intent,msg[i]);
                }

            }
        }
    }
}

你发布的stacktrace说Android正在寻找一个名为feliks.skripsi.smsinentreceiver的类,但它找不到。此类可能在manifest.xml文件中定义为接收方。检查您的应用程序是否有具有此确切名称的类


编辑:您得到的新错误是应用程序没有响应ANR。Android要求广播接收器在10秒内完成所有处理。如果接收者的onReceive方法需要更长的时间才能完成,那么进程将被Android终止。确保您在单独的线程或服务中执行所有可能需要一段时间的处理,例如网络操作。可以找到有关如何解决ANR的更多信息,并且

嗨,Alexander,欢迎使用Stack Overflow!请更清楚地说明你的问题。停止处理可能意味着什么。有例外吗?你到底想达到什么目的?为什么您需要2个模拟器?感谢您的回复,我想制作一个应用程序,可以使用sms将gps位置从模拟器发送到另一个模拟器,但当我发送请求gps位置的sms时,它停止工作。例如,emulator 5556正在从emulator 5554请求gps定位,emulator 5554安装了应用程序,但当我调试程序时,没有任何错误,我丢失了什么?好的,停止工作意味着应用程序仍在运行,但什么也没有发生?还是应用程序自动关闭?您确定第二个仿真器正在接收短信吗?是的,应用程序仍在运行,但当仿真器从另一个仿真器接收短信时,会出现一条弹出消息,显示应用程序进程停止工作。在那条信息之后,我重复了同样的短信,但有同样的回复。我确信第二个模拟器正在接收sms,因为它在模拟器屏幕上显示sms通知。我想查看您的manifest.xml我已经检查了manifest.xml中定义的类名,该类名再次被重新定义为接收方的类LBS,但它再次出现相同的错误,只是这一次不是smsinentreceiver,而是LBSi在我的列表中添加了一些内容脚本并更改LBS类,重建应用程序后,进程仍在第一个触发器上工作,但在第二个触发器上停止工作
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="feliks.skripsi"
      android:versionCode="1"
      android:versionName="1.0">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.BROADCAST_SMS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SMS"></uses-permission>


    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Screen"

                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="feliks.skripsi.WAKE_UP"/>
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <uses-library android:name="com.google.android.maps"></uses-library>


<receiver android:name=".SmsIntentReceiver"
            android:enabled="true">
            <intent-filter>
                <action
                    android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
    </receiver>




    </application>
</manifest>
01-20 20:22:48.920: ERROR/ActivityManager(71): ANR in com.android.email
01-20 20:22:48.920: ERROR/ActivityManager(71): Reason: Broadcast of Intent { act=android.intent.action.BOOT_COMPLETED cmp=com.android.email/com.android.exchange.BootReceiver }
01-20 20:22:48.920: ERROR/ActivityManager(71): Load: 5.87 / 3.05 / 1.24
01-20 20:22:48.920: ERROR/ActivityManager(71): CPU usage from 82276ms to 268ms ago:
01-20 20:22:48.920: ERROR/ActivityManager(71):   system_server: 11% = 6% user + 4% kernel / faults: 2398 minor 16 major
01-20 20:22:48.920: ERROR/ActivityManager(71):   ndroid.launcher: 4% = 2% user + 1% kernel / faults: 3311 minor 20 major
01-20 20:22:48.920: ERROR/ActivityManager(71):   m.android.phone: 3% = 2% user + 1% kernel / faults: 826 minor 1 major
01-20 20:22:48.920: ERROR/ActivityManager(71):   zygote: 2% = 1% user + 0% kernel / faults: 1837 minor 16 major
01-20 20:22:48.920: ERROR/ActivityManager(71):   adbd: 0% = 0% user + 0% kernel / faults: 2 minor
01-20 20:22:48.920: ERROR/ActivityManager(71):   kswapd0: 0% = 0% user + 0% kernel
01-20 20:22:48.920: ERROR/ActivityManager(71):   putmethod.latin: 0% = 0% user + 0% kernel / faults: 358 minor
01-20 20:22:48.920: ERROR/ActivityManager(71):   qemud: 0% = 0% user + 0% kernel / faults: 6 minor
01-20 20:22:48.920: ERROR/ActivityManager(71):   zygote: 0% = 0% user + 0% kernel / faults: 300 minor
01-20 20:22:48.920: ERROR/ActivityManager(71):   pdflush: 0% = 0% user + 0% kernel
01-20 20:22:48.920: ERROR/ActivityManager(71):   installd: 0% = 0% user + 0% kernel / faults: 52 minor
01-20 20:22:48.920: ERROR/ActivityManager(71):   events/0: 0% = 0% user + 0% kernel
01-20 20:22:48.920: ERROR/ActivityManager(71):   rild: 0% = 0% user + 0% kernel / faults: 35 minor
01-20 20:22:48.920: ERROR/ActivityManager(71):   netd: 0% = 0% user + 0% kernel / faults: 4 minor
01-20 20:22:48.920: ERROR/ActivityManager(71):  +roid.alarmclock: 0% = 0% user + 0% kernel
01-20 20:22:48.920: ERROR/ActivityManager(71):  +com.android.mms: 0% = 0% user + 0% kernel
01-20 20:22:48.920: ERROR/ActivityManager(71):  +d.process.media: 0% = 0% user + 0% kernel
01-20 20:22:48.920: ERROR/ActivityManager(71):  +s:FriendService: 0% = 0% user + 0% kernel
01-20 20:22:48.920: ERROR/ActivityManager(71):  +e.process.gapps: 0% = 0% user + 0% kernel
01-20 20:22:48.920: ERROR/ActivityManager(71):  +m.android.email: 0% = 0% user + 0% kernel
01-20 20:22:48.920: ERROR/ActivityManager(71):  +e.process.gapps: 0% = 0% user + 0% kernel
01-20 20:22:48.920: ERROR/ActivityManager(71): TOTAL: 100% = 70% user + 28% kernel + 0% iowait + 0% irq + 0% softirq