根据用户配置文件限制活动或Android组件

时间:2014-10-13 09:04:49

标签: android android-activity permissions tree

我正在编写一个应用程序,在成功登录并基于用户配置文件后,用户只能看到某些活动。例如,如果用户有profilA,则他只能看到活动A, B, C。如果他有profilB,他只能看到活动D,F,G

请注意,我可以编写2个应用程序,我的问题很容易解决,但要求是应用应管理profileAprofileB

我在考虑实现此权限的自定义权限。每个活动将使用自定义权限进行限制。例如,活动A,B and C将受com.myapp.permissions.profilA限制。活动D,F and G将受com.myapp.permissions.profilB限制。

再次搜索时,我找到了permission-tree元素和PackageManager.addPermission(PermissionInfo info)

addPermission的javadoc说:

  

向系统添加新的动态权限。为此,您的包必须通过其清单中的标记定义权限树。包只能添加由自己的包或具有相同用户ID的另一个包定义的树的权限;如果权限与权限树的名称相匹配,则权限在树中。"。":例如," com.foo.bar"是权限树的成员" com.foo"。

我的想法是,在成功登录后,根据用户个人资料定义权限树,"设置自定义权限"申请。我不知道是否可能。

当某些应用向用户隐藏某些管理员功能时,它就是一个类似的功能。我在想类似的功能。

是否可以实现此功能?或者我需要考虑另一种解决方案吗?

我对所有主张持开放态度。

4 个答案:

答案 0 :(得分:1)

有一个更简单的方法可以解决。在您的API中,为每个用户创建一个user_code,以便成功登录后,您可以获取当前登录用户的user_code。在“主页/仪表板活动”中获得代码提示后,就可以检查是否允许用户访问特定活动,如果不允许,则可以返回一个警告对话框,告诉他们他们没有权限

答案 1 :(得分:0)

似乎定义自定义权限来限制对某些活动的访问并不是您所需要的。在我看来,你正朝着错误的方向前进......正如文档所述... creating custom permissions is relatively uncommon ...我的意思是权限旨在减少彼此的安全问题和沙箱应用程序......后者似乎不是你的情况。

无论如何,这是非常罕见的...恕我直言,创建自定义权限仅仅是为了限制对某些活动的访问。特别是,因为您以同样的方式登录用户,并以同样的方式确定特定用户可以执行的操作......这与确定何时限制对应用的特定部分的访问权限的方式完全相同

答案 2 :(得分:0)

不确定为什么需要依赖权限系统来执行此操作。我在想的是你可以创建逻辑来禁用任何可能导致基于登录的配置文件启动这些活动的功能。

如果您的活动没有任何过滤器允许其他意图隐式启动,那么这意味着您的应用可以完全控制它们何时启动。

答案 3 :(得分:0)

使用登录结果来控制向用户显示的内容。如果您愿意,可以创建两个单独的XML布局文件。一个有A,B和C按钮,另一个有D,E和F按钮。

仅仅因为活动存在并不意味着它会自动显示给用户作为"入口点"。您通过在其他活动中展示的内容来做到这一点。