Android 无法实例化服务
以下是我面临的错误:Android 无法实例化服务,android,service,broadcastreceiver,Android,Service,Broadcastreceiver,以下是我面临的错误: /com.DownToLunch E/AndroidRuntime: FATAL EXCEPTION: main Process: com.DownToLunch, PID: 14615 java.lang.RuntimeException: Unable to instantiate service com.DownToLunch.Networking.RecieveSMS$MessageService: java.lang.InstantiationExce
/com.DownToLunch E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.DownToLunch, PID: 14615
java.lang.RuntimeException: Unable to instantiate service com.DownToLunch.Networking.RecieveSMS$MessageService: java.lang.InstantiationException: can't instantiate class com.DownToLunch.Networking.RecieveSMS$MessageService; no empty constructor
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2688)
at android.app.ActivityThread.access$1800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5433)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.InstantiationException: can't instantiate class com.DownToLunch.Networking.RecieveSMS$MessageService; no empty constructor
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1208)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2685)
at android.app.ActivityThread.access$1800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5433)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
这是我的清单文件:
这是一个类,我已经定义了我的服务:
公共类ReceiveSMS扩展广播接收器{
语境;
字符串电话号码;
字符串消息;
@凌驾
公共void onReceive(上下文、意图){
final Bundle=intent.getExtras();
mcontext=上下文;
字符串senderNum;
试一试{
if(bundle!=null){
最终对象[]pdusObj=(对象[])bundle.get(“pdus”);
对于(int i=0;i
在这里,我收到了otp,并试图在祝酒词中表现出来:
public class DetectOtp扩展了appcompative活动{
字符串消息;
私人意向过滤器接收过滤器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u detect\u otp);
接收过滤器=新的意向过滤器(“otp”);
LocalBroadcastManager.getInstance(这个)。
registerReceiver(处理程序、接收过滤器);
}
私有BroadcastReceiver处理程序=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
//Bundle b=intent.getExtras();
//b=getIntent().getExtras();
message=intent.getStringExtra(“消息”);
Log.d(“消息”,消息);
Toast.makeText(DetectOtp.this,
消息,Toast.LENGTH_LONG).show();
}
};
}
我在哪里犯错?使用LocalBroadcastManager
启动服务发送值时,显示以下错误:
com.DownToLunch.Networking.receiveSMS$MessageService:java.lang.InstantiationException:无法实例化类
com.DownToLunch.Networking.receiveSMS$MessageService;没有空的 替换:
public class MessageService extends Service
与:
你不能像现在这样让
服务成为一个内部类。如果服务不用于生成本地broacast:Process:com.DownToLunch,PID:15593 java.lang.NullPointerException:println需要在android.util.Log.println_native(native Method)的android.util.Log.d上显示一条消息(Log.java:164))println需要一条消息
表示您正在将null
传递给Log.*()
调用。您确定在接收器中正确附加了Intent
extra吗?当然。下面是代码:Intent sendableentent=newintent(“otp”);sendableIntent.putExtra(“消息”,消息);LocalBroadcastManager.getInstance(mcontext)。sendBroadcast(sendableIntent);您两次声明字符串消息。我可以想象,您附加到意图
的是您的广播接收器
的字段,该字段将为空。for
循环中的字符串消息
就是您要将消息正文分配给的消息。从for
循环中的消息
前面删除字符串
。谢谢,迈克……这已经解决了问题。现在我在toast中获得otp。如果我对MessageService类使用static,如果无法从send()函数访问message,则使用mcontext变量。@ShanPLT:正确。请注意,服务
是一个上下文
。对不起,您能解释一下吗detaily@ShanPLT:在服务中,将mcontext
替换为this
<代码>服务
继承自上下文
(请参阅)。在服务
中,如果需要上下文
,请使用此
。
static public class MessageService extends Service