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行)を通過します(最初はウェアー側、次にハンドヘルド側)。

これを踏まえて、Google Playサービスではカスタムアクセス権が追加されないため、データレイヤーでの通信を保護するカスタムアクセス許可を追加することはできません。

+0

これは私がスタックトレースから収集したものです。それは、私はまだ私のコンパニオンアプリだけがそれと対話できるように私のサービスをどのように制限することが可能であるのかという疑問が残っていると言われています。 – RoLAN210

関連する問題