在服务的onBind()
方法中,我想检查来电者是否具有特定权限。为此我需要找到呼叫者的身份。
我希望以下代码返回调用者包名称,但我得到服务的包名称。我做错了什么?
Binder.getCallingUid()
String pkg = getPackageManager().getNameForUid(uid);
答案 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。