Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法实例化服务_Android_Service_Broadcastreceiver - Fatal编程技术网

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