Android5.0启动Service注意事项

    xiaoxiao2021-03-25  99

    隐式声明Intent启动Service是不安全的

    ContextImpl源码指出,Android5.0隐式声明Intent启动Service直接抛出异常:

    private void validateServiceIntent(Intent service) { if (service.getComponent() == null && service.getPackage() == null) { if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) { IllegalArgumentException ex = new IllegalArgumentException( "Service Intent must be explicit: " + service); throw ex; } else { Log.w(TAG, "Implicit intents with startService are not safe: " + service + " " + Debug.getCallers(2, 3)); } } }

    解决方法:

     1. Intent intent = new Intent();     ComponentName componentName = new ComponentName(pkgName,serviceName);     intent.setComponent(componentName);     context.startService(intent);

     

     

    2.Intent mIntent = new Intent();  mIntent.setAction("XXX.XXX.XXX");//Service能够匹配的Action  mIntent.setPackage(pkgName);//应用的包名  context.startService(mIntent);

    转载请注明原文地址: https://ju.6miu.com/read-20450.html

    最新回复(0)