2

我想確保我的掌上電腦上運行的WearableListenerService只能由我的伴侶應用程序訪問。我認爲創建一個自定義權限將是採取的途徑,但是我遇到了這種方法的問題,無法讓可穿戴設備成功綁定到掌上電腦,我會在手持設備上看到以下例外;如何只允許我的伴侶手錶應用連接到手持設備上的可穿戴聽衆服務?

Permission Denial: Accessing service ComponentInfo{com.mypackage.android/com.mypackage.android.androidwear.service.WearListenerService} from pid=4868, uid=10014 requires com.mypackage.android.WATCHAPP 
WearableService: bind: Permission denied connecting to ServiceRecord[com.mypackage.android.androidwear.service.WearListenerService, events=1, bound=false, [Event[79380002: onMessageReceived, event=requestId=16741, action=/start-activity, dataSize=26, source=31c5457d]]] 
               java.lang.SecurityException: Not allowed to bind to service Intent { act=com.google.android.gms.wearable.BIND_LISTENER cmp=com.mypackage.android/.androidwear.service.WearListenerService } 
                at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1437) 
                at android.app.ContextImpl.bindService(ContextImpl.java:1395) 
                at android.content.ContextWrapper.bindService(ContextWrapper.java:632) 
                at android.content.ContextWrapper.bindService(ContextWrapper.java:632) 
                at android.content.ContextWrapper.bindService(ContextWrapper.java:632) 
                at aeim.a(:com.google.android.gms:6693) 
                at aeim.a(:com.google.android.gms:1378) 
                at aeim.handleMessage(:com.google.android.gms:1295) 
                at android.os.Handler.dispatchMessage(Handler.java:102) 
                at android.os.Looper.loop(Looper.java:158) 
                at android.os.HandlerThread.run(HandlerThread.java:61) 

我試圖在許多方面定義自定義權限,最初只在手持清單,然後在這兩個清單,以及嘗試不同的保護級別,正常,簽名,signatureOrSystem。我甚至通過運行dumpsys命令驗證了該權限已成功授予我的可穿戴設備;

declared permissions: 
    com.mypackage.android.WATCHAPP: prot=normal, INSTALLED 
requested permissions: 
    android.permission.WAKE_LOCK 
    com.mypackage.android.WATCHAPP 
install permissions: 
    com.mypackage.android.WATCHAPP: granted=true 
    android.permission.WAKE_LOCK: granted=true 

我應用了數據過濾器,以我的服務,我只想強制執行,只有我的應用程序可以啓動我的服務和過濾器的方法似乎並不足夠。

回答

1

你的手錶應用程序和手持應用程序從來沒有直接互相交談。所有數據層API都通過Google Play服務(例外的com.google.android.gms行) - 首先在Wear側,然後在手持設備側。

鑑於此,不可能添加通過數據層保護通信的自定義權限(因爲Google Play服務應用程序永遠不會添加您的自定義權限)。

+0

感謝您的迴應,這是我從堆棧跟蹤中收集的。話雖如此,我還是提出了一個問題,甚至可以限制我的服務,只有我的同伴應用可以與它互動? – RoLAN210

相關問題