在Android中获取服务的onBind()中的来电身份

时间:2016-02-10 16:05:39

标签: android android-service android-service-binding android-identifiers

在服务的onBind()方法中,我想检查来电者是否具有特定权限。为此我需要找到呼叫者的身份。

我希望以下代码返回调用者包名称,但我得到服务的包名称。我做错了什么?

Binder.getCallingUid()
String pkg = getPackageManager().getNameForUid(uid);

1 个答案:

答案 0 :(得分:0)

没有必要进行此类操作。如果您想保护绑定,启动或停止Service,请将android:permission属性添加到Service的清单声明中:

<service android:name=".MyService"
         android:permission="com.example.myapp.permission.SERVICE_USER" >
    <intent-filter>
    ...
    </intent-filter>
</service>

系统会自动确保尝试使用您服务的任何应用都拥有指定的权限。您只能在binder暴露的调用中使用enforce / check权限API。您可能会发现此文章很有用:http://po.st/d6eTXj