同项目app中在target20及以下bindServie无问题,在target21及以上会出现无法绑定的问题!
解决方法及代码:
在确保服务端的AndroidManifest.xml配置和客户端的package以及action对应的情况下。
服务端 包名为"com.test.server"
<service android:name=".MyService"
android:enabled="true"
android:exported="true"
android:process=":remote">
<intent-filter >
<action android:name=".myservice"></action>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
客户端
Intent intent =new Intent()
intent.setAction(".myservice")
intent.setComponent("com.test.server", "com.test.server.MyService"));
this.context.bindService(intent, this.serviceConn, Context.BIND_AUTO_CREATE);
在客户端的manifest中添加
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
<queries>
<package android:name="com.test.server" /> //服务端的包名
</queries>
这样设置后基本没任何问题.