监听用户更改事件(多用户设备)

Posted

技术标签:

【中文标题】监听用户更改事件(多用户设备)【英文标题】:Listen for user changed event (multi user device) 【发布时间】:2018-06-29 20:32:10 【问题描述】:

我有一个应用程序,它会在手机启动时自行启动。一位用户告诉我,他的手机被两个人使用,一个正在使用我的应用,一个没有。

因此,当用户切换时,我需要一些事件来监听,这样如果正确的用户正在使用手机,我就可以启动我的应用服务。有什么我可以用的吗?

编辑

我正在使用清单中注册的广播接收器监听启动事件,所以我知道这是什么。但我找不到任何适合在设备上切换用户的东西

【问题讨论】:

你能解释一下吗?根据我到目前为止的理解,您需要像 Windows 桌面系统这样的多用户设备,该系统可以与多用户系统一起使用。如果我是对的,那么您需要创建一个家庭启动器应用程序来选择用户配置文件,该应用程序将在设备重新启动时启动并出现在用户面前。但是,用户选择其用户类型,然后您可以根据它执行操作。 多用户支持由 android 本身在某些设备上提供。它是由一些系统提供的机制选择的,您不需要为此实现任何东西。 Android 将在用户特定的环境中运行应用程序。我的应用程序是其中一个用户始终运行的服务,因此如果当前用户更改为安装了我的应用程序的用户,则必须启动它。因此我需要一个事件来捕捉这个并启动我的应用服务...... 我建议您将Google sign-in添加到您的应用程序中,或者添加support multiple users。 如果你还没有看到这篇文章,***.com/questions/15392126/… 获取ANDROID_ID,你可以知道哪个用户是你的。 【参考方案1】:

你需要在 android 中寻找一个叫做 BroadcastReciever 的东西。它们用于捕获事件,例如相机点击、手机启动、屏幕解锁等...这些事件有一个名为 onReceive 的回调,您可以在其中实现登录。

这很简单,你可以谷歌一下。

在您的清单中:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

在您的应用程序元素中(确保为您的 BroadcastReceiver 使用完全限定的 [或相对] 类名):

<receiver android:name="com.example.MyBroadcastReceiver">  
    <intent-filter>  
        <action android:name="android.intent.action.BOOT_COMPLETED" />  
    </intent-filter>  
</receiver>

在 MyBroadcastReceiver.java 中:

package com.example;

public class MyBroadcastReceiver extends BroadcastReceiver 
    @Override
    public void onReceive(Context context, Intent intent) 
        Intent startServiceIntent = new Intent(context, MyService.class);
        context.startService(startServiceIntent);
    

【讨论】:

“我有一个应用程序会在手机启动时自行启动”所以我知道这一点,但我找不到监听用户更改的意图...

以上是关于监听用户更改事件(多用户设备)的主要内容,如果未能解决你的问题,请参考以下文章

是否有可用的事件(在 xamarin 或特定于平台的)可用于收听用户设备时间的任何变化?

多用户聊天中的 smack 存在监听器

FLTK 事件映射/多线程

微信小程序监听用户上滑下滑事件

在 ios 中处理多设备/多用户登录的推送通知

带有 Azure 推送通知的推送通知的多用户应用程序