StupidBeauty
Read times:999Posted at:Tue Mar 18 18:50:53 2014
- no title specified

Smack3.4.1文档翻译:隐私,Privacy

这是什么?

隐私 Privacy ,是一种让用户可屏蔽掉特定的其它用户的通信信息的方法。 XMPP 中, 这个功能是通过管理每个用户的隐私列表来实现的。
服务器
端的隐私列表 实现了以下功能:

  • •.获取某个用户的隐私列表。

  • •.添加、删除及编辑某个用户的隐私列表。

  • •.设置、改变或禁用活跃的列表。

  • •.设置、改变或禁用默认列表(默认就活跃的列表)。

  • •.根据JID、分组或订阅类型(或全局地)来允许或屏蔽消息。

  • •.根据JID、分组或订阅类型(或全局地)来允许或屏蔽从外部发来的在线状态通知。

  • •.根据JID、分组或订阅类型(或全局地)来允许或屏蔽向外部发出的在线状态通知。

  • •.根据JID、分组或订阅类型(或全局地)来允许或屏蔽信息/查询对(IQ)数据。

  • •.根据JID、分组或订阅类型(或全局地)来允许或屏蔽所有的通信数据。

如何使用

在当前的应用编程接口中,有三种主要的公有类:

  • •. PrivacyListManager : 这是主要的接口类,用于获取并处理服务器端的隐私列表。

  • •. PrivacyList : 它表示一个隐私列表,它拥有一个名字以及一组隐私条目对象。例如,某个列表 中会包含有可见或不可见的用户。

  • •. PrivacyItem : 具体 屏蔽 或允许某人的隐私信息。例如,允许 我的某个好友看到 我的在线状态。

  1. 1. 一开始,一个客户端 可以 从服务器上 获取 他/她/它的隐私列表

    // 创建 一个针对当前连接的隐私管理器。

    PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection);

    // 获取服务器 端的隐私列表

    PrivacyList[] lists = privacyManager.getPrivacyLists();

    现在, 该客户端可以显示 出服务器上 的每个 PrivacyItem 还可以显示出每个活跃列表、默认列表,或者什么都不显示。 该客户端即为隐私变更事件 的一个监听器。

  2. 2. 为了 向服务器添加一个新的列表 ,客户端 可以 实现类似以下的代码:

    // 设置 该列表的名字

    String listName = "newList" ;

    // 创建 一个由 PrivacyItem 组成的列表,它们会允许或屏蔽掉某个方面的隐私

    String user = "tybalt@example.com" ;

    String groupName = "enemies" ;

    ArrayList privacyItems = new ArrayList();

    PrivacyItem item = new PrivacyItem(PrivacyRule. JID , true , 1);

    item.setValue(user);

    privacyItems.add(item);

    item = new PrivacyItem(PrivacyRule. SUBSCRIPTION , true , 2);

    item.setValue(PrivacyRule. SUBSCRIPTION_BOTH );

    privacyItems.add(item);

    item = new PrivacyItem(PrivacyRule. GROUP , false , 3);

    item.setValue(groupName);

    item.setFilterMessage( true );

    privacyItems.add(item);

    // 获取针对当前连接 的隐私管理器。

    PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection);

    // 创建 新列表。

    privacyManager.createPrivacyList(listName, Arrays. asList (privacyItems));

  3. 3. 要想 修改 一个已有的列表 ,客户端 采用类似下面的代码:

    // 设置列表 的名字

    String listName = "existingList" ;

    // 获取针对当前连接 的隐私管理器。

    PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection);

    // 将新的列表发送到服务器。

    privacyManager.updatePrivacyList(listName, items);

    注意 items 是在示例 2 中定义的,并且 必须 包含列表中所有的元素( 而不是“增量信息” )。

  4. 4. 要想 删除 一个已有的列表 ,客户 采用类似下面的代码:

    // 设置列表 的名字

    String listName = "existingList" ;

    // 获取针对当前连接 的隐私管理器。

    PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection);

    // 删除 该列表。

    privacyManager.deletePrivacyList(listName);

  5. 5. 要想 禁用 掉一个活跃列表 客户 采用类似下面的代码:

    // 获取针对当前连接 的隐私管理器。

    PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection);

    // 禁用 该活跃列表。

    privacyManager.declineActiveList();

  6. 6. 要想 禁用 掉一个默认列表 客户 采用类似下面的代码:

    // 获取针对当前连接 的隐私管理器。

    PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection);

    // 禁用 该默认列表。

    privacyManager.declineDefaultList();

监听隐私信息 的变更

要想处理隐私信息变更事件,客户端 应当 监听管理器的更新信息。 当某个列表发生改变时,管理器会通知每个之前被加入的监听器。监听 必须 实现 PrivacyListListener 接口。客户 端可能需要在隐私列表发生变更时作出响应。
最重要的通知就是 updatedPrivacyList 当某个隐私列表改变它的隐私条目时, 便会发出该通知。
执行
以下代码之后,监听器便能够收到通知了:

// 获取针对当前连接 的隐私管理器。

PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection);

// 添加 要被通知的监听器 (this)

privacyManager.addListener( this );

参考

未知美人

未知美人

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands