时间:2011-01-06 19:39:05

标签: android sms broadcastreceiver

9 个答案:

答案 0 :(得分:13)

答案 1 :(得分:5)

这是一个老问题,我不确定这是你的麻烦,但我只是遇到了这个问题。在Eclipse中,我在错误的位置创建了文件夹(实际上是)。例如

<强>不正确

enter image description here

这是不正确的原因是广播文件夹/包不在您期望的命名空间内。如果您右键单击我的程序/ src 并在那里创建包,就会发生这种情况。请注意,它是我的程序/ src /广播,这是错误的。

原因是 SmsReceiver 类不在您的命名空间中。在这种情况下,您的清单中可能会有类似的内容。

<receiver android:name=".Broadcast.SmsReceiver">
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>

触发此操作时,找不到 SmsReceiver 类,您将收到错误。

<强>正确

enter image description here

执行此操作的正确方法是将软件包放入正确的命名空间,右键单击 com.example.my.program 并在其中创建它。请注意,它是我的程序/ src / com.example.my.program.Broadcast ,它现在正确地位于同一名称空间中。

应用程序可以在上面找到相同的清单代码。

答案 2 :(得分:4)

您的broadcastReceiver类必须是示例的公共类

public class ReceptorLlamadas扩展了BroadcastReceiver

答案 3 :(得分:2)

你必须写一个完整的路径到你的broadcastReceiver,我的意思是,如果在你的清单文件中你jave package =“com.myapp”,但你的MySmsBroadcast.java不完全在myapp包下(它在myapp.smsStuff上)。例如,MySmsBroadcast)

答案 4 :(得分:1)

我也有同样的问题。就我而言,我的虚拟设备已损坏。

尝试创建一个新的并运行它。为我工作!

答案 5 :(得分:1)

您可以将接收器编写为“静态”。 在程序my.sample中,应该写接收器“static SimpleSmsReceiver

答案 6 :(得分:0)

我有同样的错误。 我修改了这样的“AndroidManifest.xml”之后,错误就解决了。

receiver android:name=".SimpleSmsReceiver"

- &GT;

receiver android:name=".SimpleSMSReceiver"

错误是这样的。

...
01-13 10:23:10.787: ERROR/AndroidRuntime(378): java.lang.RuntimeException: Unable to instantiate receiver my.sample.SimpleSmsReceiver: java.lang.ClassNotFoundException: my.sample.SimpleSmsReceiver in loader dalvik.system.PathClassLoader[/data/app/my.sample-2.apk]
01-13 10:23:10.787: ERROR/AndroidRuntime(378):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2789)
01-13 10:23:10.787: ERROR/AndroidRuntime(378):     at android.app.ActivityThread.access$3200(ActivityThread.java:125)
01-13 10:23:10.787: ERROR/AndroidRuntime(378):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)

答案 7 :(得分:0)

确保您拥有不带参数的公共构造函数。 例如,我有自己的BroadcastReceiver实现,它接收构造函数的一些属性。在我添加了一个公共默认(不带参数)构造函数之后,它可以很好地工作。

答案 8 :(得分:0)

提供完全合格的班级名称,这对我有用

像这样: *

<receiver android:name="com.zolipe.communitycensus.util.CensusReceiver">
     <intent-filter>
          <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
          <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
     </intent-filter>
</receiver>

*