2014-09-19 40 views
-1

我开发的应用程序可以让用户根据Google地图找到附近的地方。想要使用我的应用程序的用户必须使用他们的Google帐户注册才能使用我的应用程序并使用他们的帐户登录。用户在我的应用程序中成功登录后,我的应用程序会保存一些共享首选项以指示用户已登录。因此,在此之后,用户无需再次登录。Android的阻止用户使用应用程序

我的应用程序里面有很多活动和片段。一段时间后,我想为用户添加阻止功能。如果用户被阻止,他们将无法再使用我的应用程序,直到管理员解除其帐户锁定。因此,管理员可以阻止来自Web服务器的用户帐户。管理员可以在用户使用我的应用程序时拦截用所以我需要一个实时系统阻止。

我需要一些想法,简单地在我的应用程序上实现。我的应用程序包含许多活动和片段。如果这个想法是在每个活动中检查用户帐户,并将其分段到数据库服务器,我认为它是一个坏主意。因为我可以消费用户的带宽,并为我提供了很多工作。我需要一些实时提供阻止系统的想法。

所以,如果用户已被封锁,他们无法使用我的应用程序:

  1. 即使他们使用的应用程序。
  2. 即使当他们试图关闭应用程序并再次打开
  3. 即使当他们试图清除设置/应用程序管理器应用程序的数据/我的应用程序/清除数据
  4. 即使他们在另一个应用程序,并回到我的应用程序(的onResume ())
  5. 甚至他们卸载应用程序并从Play商店下载。

任何想法?请提供一些代码或链接以供参考。

谢谢。

+0

为什么它需要关闭?怎么了?我需要一些想法。我在哪里必须在这里问我的问题? – NPE 2014-09-19 05:51:58

回答

0

你的代码中可能有一个boolean isBlockedHere is a simple example

在启动活动的onCreate中,您从服务器读取此值(以便每次启动应用程序时)并检查其值。每次读取此值时,您还可以将其存储在SharedPreferences中作为lastKnownIsBlockedValue,然后在用户没有互联网连接时读取该值。这样,如果您阻止用户并关闭互联网,他们仍然被阻止。

此外,如果用户被阻止,在onCreate()里面,并且在检查之后,您可以启动另一个活动,告诉他“您被阻止”或沿着这些线路。否则,您可以继续正常流程的应用程序。

您所有的情况下都涉及这种方式和它相当简单:

即使他们使用的应用程序。

由于您每次从应用程序加载时都从服务器读取数据,无论他们使用应用程序多长时间,一旦它们被阻止,就会被阻止。

即使当他们试图关闭应用程序并再次打开

原因同上,再加上你可以使用存储在SharedPreferences如果他们从互联网上断开值。

即使当他们试图在设置/应用程序管理器来清除应用数据/我的应用/清除数据

同样的理由,如果他们有互联网的第一个。但是,如果您阻止他们,并且他们从互联网上断开连接,并按清除数据,则可能有问题。如果他们设法删除存储在SharedPreferences中的内容,他们将会被解除封锁,但只有在他们与互联网保持断开连接时。老实说,我不知道清除数据是如何工作的,并不会删除SharedPreferences所以我相信别人,这里将填写在本栏:)

即使他们在另一个应用程序,并回到我的应用程序填写(的onResume() )

这样做是因为,一旦onCreate()叫你确定用户被阻止,你推出,只是告诉他们:“对不起,你被封锁”或任何这样的onResume()将被称为该活动与第二活动不是你的常客。

甚至他们卸载应用程序并从Play商店下载。

与第一个相同的推理。你封锁的用户在线保存,即使他们重新安装应用程序,你也可以。

0

您可以使用GCM(Google Cloud Messaging)。请阅读this

想法就是这样。当管理员发送推送给用户阻止。收到您的应用程序将通过GCM接收块推送。在接收方法,你可以关闭你的应用程序,或者你可以给弹出来阻止。并且还要注销用户,因此当他再次登录时,应用程序将在服务器上检查该用户的阻止状态。

而当管理员想要解除阻止用户,然后只是将服务器上的块状态更改为UNBLOCK