我有以下测试服务。它在 API 21 上运行良好,但在 API 23 上该服务无法启动。
我已经浏览了 API 更改文档,但看不到注册更改等任何内容。
这段代码在 API 21 上运行。我缺少什么?
list fragment :
<service
android:name="com.mytest.service.TestService"
android:label="@string/app_name"
android:permission="android.permission.SYSTEM_ALERT_WINDOW" />
主要 Activity 部分:
this.startService(new Intent(this, TestService.class));
服务:
public class TestService extends Service
{
@Nullable
@Override
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Log.d("OOP", "onstartTest");
return super.onStartCommand(intent, flags, startId);
}
}
最佳答案
删除android:permission="android.permission.SYSTEM_ALERT_WINDOW"
。您不需要它,因为您的服务未导出,因此第三方应用程序无论如何都无法与该服务通信。
我的猜测是,您的应用不具备该权限,因为用户没有手动进入并允许您的应用在其他应用之上绘制(通过“设置”)。
关于java - Android 6.0 Marshmallow - 服务未在 API 23 测试中启动,但在 API 21 上运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35095041/