Jas*_*son 4 android adb android-8.0-oreo
在模拟器上使用 API 25:
adb shell settings put secure android_id 8af8770a27cfd182
adb shell settings get secure android_id //gives 8af8770a27cfd182
Secure.getString(context.getContentResolver(), Secure.ANDROID_ID) //gives 8af8770a27cfd182
Run Code Online (Sandbox Code Playgroud)
在模拟器上使用 API 26:
adb shell settings put secure android_id 8af8770a27cfd182
adb shell settings get secure android_id //gives 8af8770a27cfd182
Secure.getString(context.getContentResolver(), Secure.ANDROID_ID) //gives 6e4f84f5513b80e1
Run Code Online (Sandbox Code Playgroud)
我已经阅读了 API 25 和 26 之间 ANDROID_ID 的变化,但为什么 adb 和代码给了我不同的结果?
更新:
创建了一个简单的应用程序来消除旧应用程序的复杂性。新应用有一个主要活动,上面有一个按钮:
package com.example.diolaj01.testandroidid;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
protected void GetAndroidId(View view){
Log.e("myDebugTag", Settings.Secure.getString(view.getContext().getContentResolver(),
Settings.Secure.ANDROID_ID));
}
}
Run Code Online (Sandbox Code Playgroud)
单击带有 API 25 的设备上的按钮时,我得到与从 adb 请求 ANDROID_ID 时相同的值:
adb shell settings get secure android_id
Run Code Online (Sandbox Code Playgroud)
如果我更改了 android_id,我仍然会在控制台中使用按钮和使用 adb 获得更新的 android_id。
单击带有 API 26 的设备上的按钮时,我得到的值与使用 adb 时得到的值不同。如果我使用 adb 更改 android_id 我将在使用 adb 但不使用按钮时获得更新的值。
来自https://developer.android.com/about/versions/oreo/android-8.0-changes.html#privacy-all
隐私 Android 8.0(API 级别 26)对平台进行了以下与隐私相关的更改。
该平台现在以不同的方式处理标识符。
对于在 OTA 之前安装到 Android 8.0(API 级别 26)(API 级别 26)版本的应用程序,
ANDROID_ID除非在 OTA 之后卸载然后重新安装,否则该值保持不变。为了在 OTA 后跨卸载保留值,开发人员可以使用键/值备份来关联旧值和新值。对于安装在运行 Android 8.0 的设备上的应用, 的值
ANDROID_ID现在适用于每个应用签名密钥以及每个用户。的值ANDROID_ID对于应用签名密钥、用户和设备的每个组合都是唯一的。因此,在同一设备上运行的具有不同签名密钥的应用不再看到相同的 Android ID(即使是同一用户)。
ANDROID_ID只要签名密钥相同(并且在 OTA 到 Android 8.0 版本之前未安装应用程序),卸载或重新安装软件包时的值 不会更改。
ANDROID_ID即使系统更新导致包签名密钥更改,的值也不会更改。在附带 Google Play 服务和广告 ID 的设备上,您必须使用广告 ID。一个简单的标准系统,用于通过应用程序获利,广告 ID 是唯一的、用户可重置的广告 ID。它由 Google Play 服务提供。
其他设备制造商应继续提供
ANDROID_ID。
该shell用户是从您的应用程序的用户ID不同-这样的差异。
| 归档时间: |
|
| 查看次数: |
3025 次 |
| 最近记录: |