在XML文件中,我们可以为视图分配ID android:id="@+id/something"
,然后调用findViewById()
,但在以编程方式创建视图时,如何分配ID?
我认为setId()
与默认分配不同.setId()
是额外的.
任何人都可以纠正我吗?
android android-view findviewbyid android-resources android-identifiers
我在Eclipse中有两个Android项目.我从另一个项目中复制了一个项目,然后更改了应用程序名称(在strings.xml中)和项目名称(在Eclipse中).
但现在有一个问题:当我在模拟器中运行任一应用程序时,另一个应用程序丢失(可能被覆盖?).所以我想我还有另外一个设置,所以Android会识别出两个不同的应用程序?
谢谢!
我看到了一个我最好的问题是否有一个独特的Android设备ID?
我使用了一些以下代码来获取唯一ID.
public static String getDeviceId(Activity context) {
PermissionsChecker checker = new PermissionsChecker(context);
if (checker.lacksPermissions(Manifest.permission.READ_PHONE_STATE))
PermissionsActivity.startActivityForResult(context, 0, REQUIRED_PERMISSION);
else {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
final String tmDevice = tm.getDeviceId();
final String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
UUID deviceUuid = new UUID(androidId.hashCode(), ((long) tmDevice.hashCode() << 32));
return deviceUuid.toString();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
但是我在悬停时会收到一些警告
tm.getDeviceId();
和
Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
如下:
建议不要使用getString来获取设备标识符.
除高价值防欺诈和高级电话用例外,不建议使用设备标识符.对于广告用例,请使用AdvertisingIdClient $ Info#getId并使用InstanceId#getId进行分析.
有什么解决方案吗?它有害还是其他什么?
android telephonymanager android-identifiers android-settings
我正在开发一个Android应用程序,我将使用LVL库来检查谷歌播放许可证.
阅读LVL文档后,我已经读过我必须获取android.Settings.Secure.ANDROID_ID来混淆google play响应.
但我还读到,从TelephonyManager获得的ANDROID_ID有时对于不同的设备是相同的.
首先,它在2.2之前的Android版本("Froyo")上并非100%可靠.此外,在主要制造商的流行手机中至少有一个被广泛观察到的错误,其中每个实例都具有相同的ANDROID_ID
真的吗?
谢谢
我需要唯一识别Android设备.我读到了关于ANDROID_ID但它似乎与Android 2.2有问题.然后还有其他与TelephonyManager相关的标识符,但我认为它们不适用于平板电脑.
因此,寻找在每台设备上工作的东西我偶然发现了GSF ID KEY(谷歌服务框架ID).你们认为这是一个可靠且始终可行的解决方案吗?这是我找到的用于检索GSF ID KEY的代码:
private static String getGsfAndroidId(Context context)
{
Uri URI = Uri.parse("content://com.google.android.gsf.gservices");
String ID_KEY = "android_id";
String params[] = {ID_KEY};
Cursor c = context.getContentResolver().query(URI, null, null, params, null);
if (!c.moveToFirst() || c.getColumnCount() < 2)
return null;
try
{
return Long.toHexString(Long.parseLong(c.getString(1)));
}
catch (NumberFormatException e)
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud) 我只是想知道.有没有办法使用for循环创建一个id
我在xml中有10个按钮.有ID是button1,button2,button3... button10
现在,我创建按钮的数组中java class
,并像这样做
public class Menu extends Activity
{
Button[] arrayButton=new Button[10];
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
init();
}
private void init()
{
for(int i=1 ; i<9 ; i++)
{
String abc = "but"+String.valueof(i);
int x = Integer.parseInt(abc);
Log.d("abc", abc);
Log.d("x", String.valueOf(x) );
//arrayButton[i] = (Button) findViewById(R.id.x); // giving error
//arrayButton[i].setText("Hello:");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道我该怎么做这种工作.使用for循环获取所有按钮可以使我的工作更快,有时我想设置所有按钮的文本.
android view r.java-file android-resources android-identifiers
我需要一个在卸载并重新安装应用程序后仍然存在的设备标识符。我知道 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 的方法,即使没有明确的用户控制从应用程序或系统设置中重置它。
但是我不知道如何获取这些标识符,选择我的范围和持久性。谢谢
我认为会有一些直接的解决方案。
要求:
选项:
每次需要时使用某种 Android 的 device-identifier-API(每次从 Android 的 API 中读取)。根据Identififying-app-installations博客文章,这是不推荐且不可靠的解决方案。
生成一次 UUID(在第一次应用程序启动时)并以某种方式将其保存在某个地方,以便在多个应用程序安装/卸载时保留它。这个“不知何故”的部分是个谜。无法选择存储到 SD 卡或云等解决方案。iOS 有可用于这类东西的钥匙串,但我没有找到 Android 的等价物。
我在这里的其他选择是什么?由于我的服务器实现,我更喜欢走 (2) 路线(如果不存在,服务器将第一次生成 UUID)。但如果它不是一个选项,我可以回退到 (1) 并修改服务器。
谢谢。
我从系统中获取了所有小写字母的设备ID.PLayStore中的某些设备ID应用程序仅以大写形式返回设备ID.我听说iOS的这些ID 区分大小写.
Android设备ID区分大小写吗?
我也很欣赏与文档的链接.
编辑:更准确地说,正如您在此处看到的那样,读取了设备ID
f07a13984eed116a
是那个相同的设备
F07A13984EED116A ?或者是最后一个设备?
我们使用以下代码获取唯一 ID:
String id = Settings.Secure.getString(mContext.getContentResolver(),
Settings.Secure.ANDROID_ID);
Run Code Online (Sandbox Code Playgroud)
在 Android O 更改指南中,我们可以看到以下几点:
Android O 对平台进行了以下与隐私相关的更改。 https://developer.android.com/preview/behavior-changes.html
The platform now handles identifiers differently.
Values of ANDROID_ID are now scoped per-app instead of per-user. The value of ANDROID_ID is unique for each combination of application package name, signature, user, and device. Two apps running on the same device no longer see the same Android ID, and so cannot correlate.
The value of ANDROID_ID does not change on package uninstall or reinstall, as long …
Run Code Online (Sandbox Code Playgroud) 我有一个view
,我有它的资源ID(即R.id.xxx
),我想提取xxx
部分并将其转换为字符串.
这可能吗?
为了清楚起见,我有view.getId()
一个资源整数,而不是id的实际名称.
我正在尝试为视图生成随机ID,如以下屏幕截图所示。但这没有用。它为空。我应该如何找到ViewById?
android ×12
android-view ×3
deviceid ×1
findviewbyid ×1
guid ×1
persistence ×1
r.java-file ×1
uuid ×1
view ×1