相关疑难解决方法(0)

生成特定于设备的序列号

我希望能够为每个Android设备生成唯一的序列号,以用于解锁应用程序.我怎么能这样做?

编辑:

原因是我想要修改付费应用程序,并为已支付旧版本的用户提供不同的软件包名称,通过下载可解锁的应用程序免费版本来获取完整版本.我会将更新推送到旧版本,该版本将生成并显示他们可以输入的代码,以将免费版本转换为功能完整的版本.

android licensing license-key

12
推荐指数
2
解决办法
9253
查看次数

设备ID提供空值

我想[I.E unique id of a device]通过使用下面的代码来获取唯一ID

TelephonyManager tManager;

tManager = (TelephonyManager).getSystemService(Context.TELEPHONY_SERVICE);

String deviceId = tManager.getDeviceId();
Run Code Online (Sandbox Code Playgroud)

在哪里deviceId为我提供Android设备的唯一ID.我不是在模拟器上测试它,因为在模拟器中我获得了价值000000000000000

我在实际设备上测试它的任何方式,这适用于大多数设备,但在某些设备,我正在获得价值 null

我测试了这个

Samsung Galaxy S3

Samsung Galaxy Tab3

Samsung Galaxy Star

Google Nexus4

Google Nexus5

Google Nexus7
Run Code Online (Sandbox Code Playgroud)

在上面列出的所有设备中,它给出了正确的输出,除了一个设备,也就是说Google Nexus7,在此获得价值null

所以,最终我的目标是为每个特定的设备获得独特的价值,如果这个代码给我的空值比我可以尝试一些替代的方式

我听说这 Device MAC Address是所有设备的独特之处,但不幸的是它只适用于wifi连接.

那么有没有其他方法可以获得每个特定设备的独特价值?

不管怎么说,还是要谢谢你

android

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

Android库项目作为分发的jar文件,如谷歌分析

我已经看到了这个问题,并且对于创建一个我可以分发的jar文件有一些疑问,可以在任何Android应用程序中使用.

我的要求是什么

  1. 正如我所说,我想构建和分发一个封闭的源库.我不希望源代码可见.
  2. 在该库中我不想使用任何资产,布局,资源等.但我想使用一些Android特定的代码,如获取Android设备ID.

上面链接的SO问题中最流行的答案告诉我创建一个常规的java项目并导入android.jar.我试图这样做,但我不知道如何将android.jar添加到任何java项目.我也希望得到一些澄清.

此外我想知道是否有任何其他方法使用android sdk本身(不使用java项目)创建一个封闭的源库jar文件.

我认为我想要的是可能的,因为Android原生应用程序的谷歌分析似乎已经做到了.我相信他们分发的.jar文件中他们使用的是特定于Android的代码,因为他们似乎没有办法让设备信息显示在分析查看器中.

编辑:有人可以澄清吗?

我想我已经取得了一些进展.这就是我所做的

  • 创建了一个常规的android项目(不是库项目,未选中"is Library"复选标记)

  • 在项目中,我编写了我的逻辑.它使用了一些特定的Android类,如SharedPreference,UUID,PackageManager.但是没有任何与资产相关的布局,也没有类扩展 Activity.只是一个java类扩展java.lang.object

  • 使用Project-> rightclick-> export-> Java-> JAR文件导出项目.在下一个屏幕中,我取消选中附近的复选框 AndroidManifest.xml.设置要导出的目标目录,并在保留默认设置的情况下单击下一次三次.然后我点击了Finish,在我的桌面上找到了一个可爱的libMyLibraryName.jar.

然后我创建了另一个android项目,libMyLibraryName.jar使用project-> rightclick-> properties-> java build path - > libraries-> add external jar将其添加到新项目中.

我试图在我的新项目中使用我的课程

MyLibraryClass objClass = new MyLibraryClass(this);
Run Code Online (Sandbox Code Playgroud)

我能够成功编译并运行.我甚至将图书馆发送给了我的同事之一,他可以在他的机器上使用该库(只是确保我工作区中的库项目不会影响使用它的项目).

现在我有2个问题.

1)我的第一个问题是,在下面给出的文档中,"真正的库"一词是什么意思?是否可以导出到JAR文件的任何非android java项目?

但是,库项目与标准Android应用程序项目的不同之处在于,您无法将其直接编译为自己的.apk并在Android设备上运行它.同样,您无法将库项目导出到自包含的JAR文件,就像对真正的库一样.相反,您必须通过引用依赖应用程序中的库并构建该应用程序来间接编译库.

那么这部分来自"图书馆项目"标题下的文件. …

android jar

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

固定机器的标识符(uuid.getnode)

我试图找到一些我可以用作我的脚本的唯一字符串/数字的东西,它固定在一台机器上并且很容易获得(跨平台).我认为一台机器会有一张网卡.我不需要它真正独特,但必要的是它应该长期固定,尽可能少.

我知道MAC可以更改,我可能会在我的脚本中发出警告,但我不希望每天早上都有人更改MAC.

我想出的是uuid.getnode(),但在文档中有:

如果所有获取硬件地址的尝试都失败,我们选择一个随机的48位数字

这是否意味着对于每个函数调用我得到另一个随机数,因此如果MAC无法获得则不可能使用它?

...在具有多个网络接口的计算机上,可以返回其中任何一个的MAC地址.

这句话是否意味着getnode()获得所有可用的随机(或第一)MAC?如果首次获得MAC A而下次获得MAC B怎么办?如果我得到一个固定的列表就没有问题(排序,连接,tadaaa!)

我问,因为我自己无法测试它.

python hardware uuid mac-address identifier

10
推荐指数
2
解决办法
4584
查看次数

Android唯一ID

如何从Android手机获取唯一ID?

每当我尝试从手机中获取唯一ID作为字符串时,它总是显示android id并且没有其他唯一的十六进制值.

我怎么得到那个?

这是我用来获取ID的代码:

String id=Settings.Secure.getString(contentResolver,Settings.Secure.ANDROID_ID);
Log.i("Android is is:",id);
Run Code Online (Sandbox Code Playgroud)

我得到的输出看起来像这样:

Android id is: android id
Run Code Online (Sandbox Code Playgroud)

我正在使用Nexus One进行测试.

android

9
推荐指数
2
解决办法
3万
查看次数

像IPhone一样的Android UDID?

Android有像IPhone这样的UDID吗?如果是的话,有没有办法以编程方式获得它?

谢谢克里斯

iphone android udid

9
推荐指数
2
解决办法
3万
查看次数

在Android中的本地SQLite数据库中存储用户名+密码是否安全?

我正处于允许用户在即将推出的Android应用程序中存储简单Web应用程序凭据的位置.我的恐惧(对Android来说是新手)是其他(邪恶的)应用程序可以进入这个看似本地的数据库(我的应用程序的本地数据库)

在撰写此功能时,我是否应该担心其他应用会获取此数据?如果是这样,在本地加密它的最佳方法是什么(但请记住,我需要在某些时候将其拉出来以便在用户使用应用程序时将其记录下来)

谢谢!

sqlite security android

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

Android中每个用户的唯一ID

我想在安装应用程序后立即为每个用户分配唯一ID,以便每当应用程序联系服务器时,我知道谁在联系.为此,我认为在第一次安装时,应用程序会联系服务器并获取唯一ID.但我不知道永久存储它的位置,以便下次启动应用程序时,它知道它的ID是什么,而不是联系服务器.

对不起,如果这是一个明显的问题,因为我是新手.

android

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

为什么我的应用要求获得手机ID权限?

在我的清单中,我只要求这两个权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

但是当我在手机上安装应用程序时,我也收到了这个通知:

Low-risk permissions
Phone ID
Get your phone ID, including IMEI, IMSI, etc.
Run Code Online (Sandbox Code Playgroud)

从我从这个SO答案中收集到的内容,我应该使用TelephonyManager并打电话

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)

要求此权限.但我没有使用TelephonyManager或调用该权限.我不想要求用户提供此权限.我查看了我的清单和gradle文件.可能是我使用的一些代码触发了这个权限被调用而没有我特别要求它吗?我知道我不会给你很多东西,因为我不知道还有什么可以看的.

更新1

我在Android Studio中创建了一个全新的项目,并从中生成了一个签名的APK.我安装了它,但没有要求权限.(这至少证实了我在Android Studio中不是一些自动要求此权限的"新功能".)

更新2

至于@ antonio的答案我发现app/build/outputs/logs/manifest-merger-release-report.txt但是,我没有发现任何隐含的权限被请求.

更新3

以下是我的应用程序使用的依赖项(来自gradle.build):

dependencies {
    compile 'com.android.support:support-v4:21.0.3'
    compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
}
Run Code Online (Sandbox Code Playgroud)

我测试了一个具有这两个依赖项的新应用程序,并且没有请求任何权限.

我的下一步是从头开始再次添加每个活动,看看我是否可以找到此权限开始被调用的位置.未完待续...

更新4

我把所有东西复制到一个新项目并重构项目名称和删除碎片,但事实证明它非常复杂.我无法理清原因.

更新5

我将targetSdkVersion设置为1.这在安装应用程序之前宣布权限时会给出一条新消息:

读取电话状态和身份

允许该应用访问设备的手机功能.此权限允许应用程序确定电话号码和设备ID,呼叫是否处于活动状态以及通过呼叫连接的远程号码.

我在开头写的旧手机ID权限通知仍然存在(在安装应用程序后显示).这让我想知道它是否与操作系统有关(我在小米手机上使用MIUI Android).该应用程序仍有一些东西导致它显示在此应用程序中,但不会在其他应用程序中显示.我需要在接下来的其他设备上测试一下.

permissions android

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

UDID或IMEI-哪个更好?

在开发需要我唯一识别手机用户的应用时.我希望就是否最好使用手机的UDID或IMEI提出一些建议.使用任何一个都有任何优点/缺点.所有评论将不胜感激

windows android imei udid cordova

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