fad*_*wdt 9 sms android broadcastreceiver
为什么我有这个错误:
ERROR/AndroidRuntime(854): Uncaught handler: thread main exiting due to uncaught exception
ERROR/AndroidRuntime(854): java.lang.RuntimeException: Unable to instantiate receiver com.android.GPS21.SmsReceiver: java.lang.ClassNotFoundException: com.android.GPS21.SmsReceiver in loader dalvik.system.PathClassLoader@43d02ef0
ERROR/AndroidRuntime(854): Caused by: java.lang.ClassNotFoundException: com.android.GPS21.SmsReceiver in loader dalvik.system.PathClassLoader@43d02ef0
Run Code Online (Sandbox Code Playgroud)
这是我的onReceive事件:
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.i(LOG_TAG, "Recieved a message");
if (intent.getAction().equals(ACTION)) {
// if(message starts with SMStretcher recognize BYTE)
StringBuilder sb = new StringBuilder();
// The SMS-Messages are 'hiding' within the extras of the Intent.
Bundle bundle = intent.getExtras();
if (bundle != null) {
// Get all messages contained in the Intent
// Telephony.Sms.Intents.getMessagesFromIntent(intent) does not
// work anymore hence the below changes
Object[] pduObj = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pduObj.length];
for (int i = 0; i < pduObj.length; i++)
messages[i] = SmsMessage.createFromPdu((byte[]) pduObj[i]);
// Feed the StringBuilder with all Messages found.
for (SmsMessage currentMessage : messages) {
sb.append("SMS Received From: ");
// Sender-Number
sb.append(currentMessage.getDisplayOriginatingAddress());
sb.append("\nMessage : ");
// Actual Message-Content
sb.append(currentMessage.getDisplayMessageBody());
}
}
// Logger Debug-Output
Log.i(LOG_TAG, "[SMSApp] onReceive: " + sb);
// Show the Notification containing the Message.
Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)
在调试中,onReceive()是错误的.
我只是让BroadcastReceiver接收短信并在通知Toast中显示..
我尝试从DDMS发送短信,然后出现错误..
这是一个老问题,我不确定这是你的麻烦,但我只是遇到了这个问题.在Eclipse中,我在错误的位置创建了文件夹(实际上是一个包).例如
不正确

这是不正确的原因是广播文件夹/包不像你期望的那样在命名空间内.如果您右键单击My Program/src并在那里创建包,就会发生这种情况.请注意,这是我的程序/ src/Broadcast,这是错误的.
原因是SmsReceiver类不在您的命名空间中.在这种情况下,您的清单中可能会有类似的内容.
<receiver android:name=".Broadcast.SmsReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
触发此操作时,找不到SmsReceiver类,您将收到错误.
正确

执行此操作的正确方法,并将包放在正确的命名空间中是右键单击com.example.my.program并在其中创建它.请注意,它是My Program/src/com.example.my.program.Broadcast,它现在正确地位于同一名称空间中.
这将在应用程序中找到,具有相同的清单代码.
| 归档时间: |
|
| 查看次数: |
25348 次 |
| 最近记录: |