java - Android 6.0 Marshmallow - 服务未在 API 23 测试中启动,但在 API 21 上运行良好

标签 java android

我有以下测试服务。它在 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/

相关文章:

android - 如何在 Android Studio 上使用 Google Play Services 7.3.0?

Android Listview 项目删除

java - 以编程方式使用单个 fragment 初始化 FragmentActivity

java - GenericArrayType 接口(interface)的实例

java - 为什么我的 TCP 服务器套接字在一个客户端失去连接后关闭?

java - 如何使用jformdesigner在java中调用公共(public)类来显示gui

java - Android - 如何在我的项目中添加@hide 注释

java - Hibernate 查询未返回正确的值

java - 捕获异常的数量是否会影响 try-code 的性能?

android - 如何渲染裁剪成圆形的 SurfaceView?