我有一个应用程序,比如 ApplicationProvider,它包含一个提供者和一个接收者。另一个应用程序,比如 ApplicationCreator,通过一个意图在提供者上创建一个元素。ApplicationProvider 获取意图并相应地创建元素。
现在我希望 ApplicationCreator 是唯一拥有访问该元素的权利的人。因此,如果另一个应用程序尝试访问该元素,则会产生某种错误。
最好的方法是什么?我想出了两个可能的解决方案,但我不喜欢其中任何一个。
1) ApplicationProvider 拒绝对提供者的任何直接访问,而是使用接收者获取通过 intentForResult 发送的意图,因此接收者可以检查调用者,验证是创建元素的原始调用者并授予访问权限。其他应用程序将被拒绝,因为它们拥有不同的 uid。由于没有简单的方法来伪造uid,因此该系统可以正常工作。
2)任何应用程序都可以向提供者发送意图,但在清单中我指定了对创建的单个 uri 的所有路径级权限。每次有人想要创建新元素时,我都会手动向应用程序发布更新。
==========================================
附加信息:
如果不同的应用程序可以放置不同的元素,并且能够保留修改他们创建的元素的权利,并且还授予对请求所述权限的那些元素的权限,那将是理想的。
A---> +--------+ A creates content
| pro | <---B B asks permission
A<----| vid | the provider forward permission
A---->| er | A grant permission
| | --->B B is given permission and can access A's stuff
+--------+