小编leo*_*dev的帖子

ANDROID - 获取持久设备标识符(UUID)

我需要一个在卸载并重新安装应用程序后仍然存在的设备标识符。我知道 UUID 类为该方法提供了一个标识符

String uniqueID = UUID.randomUUID().toString();
Run Code Online (Sandbox Code Playgroud)

但 Android 指南对其范围和持久性尚不清楚。在下一段它说:

Android 操作系统提供了许多具有不同行为特征的 ID,您应该使用哪个 ID 取决于以下特征如何与您的用例配合使用。但这些特征也伴随着隐私问题,因此了解这些特征如何共同发挥作用非常重要。

范围

标识符范围解释了哪些系统可以访问标识符。Android 标识符范围通常分为三种:

单个应用程序。ID 是应用程序内部的,其他应用程序无法访问。

应用程序组- 一组预定义的相关应用程序可以访问该 ID。

设备- 该 ID 可供设备上安装的所有应用程序访问。授予标识符的范围越广,其被用于跟踪目的的风险就越大。相反,如果标识符只能由单个应用程序实例访问,则它不能用于跨不同应用程序中的事务跟踪设备。

可重置性和持久性

可重置性和持久性定义了标识符的生命周期并解释了如何重置它。常见的重置触发器有:应用内重置、通过系统设置重置、启动时重置和安装时重置。Android 标识符可以有不同的生命周期,但生命周期通常与 ID 的重置方式有关:

仅会话- 每次用户重新启动应用程序时都会使用一个新 ID。

安装-重置- 每次用户卸载和重新安装应用程序时都会使用一个新 ID。

FDR 重置- 每次用户对设备进行出厂重置时都会使用一个新 ID。

FDR 持久性- ID 在出厂重置后仍然有效。

可重置性使用户能够创建与任何现有配置文件信息无关的新 ID。这很重要,因为标识符持续的时间越长、越可靠(例如跨出厂重置等),用户可能受到长期跟踪的风险就越大。如果在重新安装应用程序时重置标识符,这会减少持久性并提供重置 ID 的方法,即使没有明确的用户控制从应用程序或系统设置中重置它。

但是我不知道如何获取这些标识符,选择我的范围和持久性。谢谢

uuid android persistence guid android-identifiers

5
推荐指数
1
解决办法
5485
查看次数

Android SearchView setOnActionExpandListener 不起作用

我需要在我的 SearchView 是否折叠时进行拦截,以便更改我的 Activity 中的某些片段,即 AppCompatActivity。我使用MenuItemCompat.setOnActionExpandListener方法创建了一个侦听器,但似乎从未调用过它。同样奇怪的是,在我的方法onOptionsItemSelected 中,经过一些调试后,我检查了一下,仍然在这里我什么也无法接受。我尝试了这里建立的各种方法来解决这个问题,但没有办法解决它。这是我的代码:

menu_search_cat.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".CategoriesActivity">

<item android:id="@+id/search"
    android:title="@string/search_title"
    android:orderInCategory="1"
    android:icon="@android:drawable/ic_menu_search"
    app:showAsAction="always"
    app:actionViewClass="android.widget.SearchView"  />
Run Code Online (Sandbox Code Playgroud)

分类活动

import android.widget.SearchView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_categories);

    ...

    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_search_cat, menu);

    // Associate searchable configuration with the SearchView
    SearchManager searchManager =
            (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    final SearchView searchView =
            (SearchView) menu.findItem(R.id.search).getActionView();
    searchView.setSearchableInfo(
            searchManager.getSearchableInfo(getComponentName()));

    searchView.setOnQueryTextListener(this);

    MenuItem searchItem = …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat searchview

1
推荐指数
1
解决办法
1178
查看次数