在onBind()
服务的方法中,我想检查调用者是否具有特定权限。为此,我需要找到调用者的身份。
我希望以下代码返回调用程序包名称,但我得到了服务的包名称。我究竟做错了什么?
Binder.getCallingUid()
String pkg = getPackageManager().getNameForUid(uid);
在onBind()
服务的方法中,我想检查调用者是否具有特定权限。为此,我需要找到调用者的身份。
我希望以下代码返回调用程序包名称,但我得到了服务的包名称。我究竟做错了什么?
Binder.getCallingUid()
String pkg = getPackageManager().getNameForUid(uid);
无需进行此类操作。如果您想保护绑定、启动或停止您的Service
然后将android:permission
属性添加到您的清单声明Service
:
<service android:name=".MyService"
android:permission="com.example.myapp.permission.SERVICE_USER" >
<intent-filter>
...
</intent-filter>
</service>
系统将自动确保任何尝试使用您的服务的应用程序都拥有指定的权限。您只能在活页夹公开的调用中使用强制/检查权限 API。您可能会发现这篇文章很有帮助: http: //po.st/d6eTXj。