Service错误

时间:2023-03-10 01:50:53
Service错误

错误日志:

 Caused by: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=m4 (has extras) }
                                                                              at android.app.ContextImpl.validateServiceIntent(ContextImpl.java:1809)
                                                                              at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1838)
                                                                              at android.app.ContextImpl.startService(ContextImpl.java:1822)
                                                                              at android.content.ContextWrapper.startService(ContextWrapper.java:516)
                                                                              at myapplication.com.canvas.MainActivity.start(MainActivity.java:24)
                                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                                              at java.lang.reflect.Method.invoke(Method.java:372)
                                                                              at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
                                                                              at android.view.View.performClick(View.java:4793)
                                                                              at android.view.View$PerformClick.run(View.java:19960)
                                                                              at android.os.Handler.handleCallback(Handler.java:739)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                              at android.os.Looper.loop(Looper.java:135)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5593)
                                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                                              at java.lang.reflect.Method.invoke(Method.java:372)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:967)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

补充代码:

<1> 配置文件:

  <service android:name=".service.FirstService" >
<intent-filter>
<action android:name="m4" />
</intent-filter>
</service>

<2>

public class FirstService extends Service {
/*
* intent:startServcie(it)传入的值
* startId:启动服务的次数序号
*
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) { int x = intent.getIntExtra("x", 0);
//System.out.println("--"+startId+"--"+x);
if (x==88) {
//停止服务
stopSelf();
}
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
System.out.println("--onDestroy");
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
} }

<3>

public class MainActivity extends AppCompatActivity {

    TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); }
public void start(View v){
Intent it=new Intent();
it.setAction("m4");
it.putExtra("x", 88); startService(it);
}
}

错误修改:

 public void start(View v){
Intent it=new Intent();
it.setAction("m4");
it.putExtra("x", 88);
it.setPackage("myapplication.com.canvas");//应用的包名
startService(it);
}