Android 安卓5.0(及其他)上的设备所有者,无根设备,NFC提供设备
我需要知道如何在Android 5.0、4.4和4.3(?)中将我的应用程序设置为设备所有者。我已经为根设备()成功地尝试了该方法。我在android 5.0和4.4.2 emulator以及CyanoGen AOSP 4.4.4(所有根设备)中看到了这一点。但我必须在其他非根设备上尝试这一点,在Android 5.0开发者API中,您可以阅读这一点 “要部署和激活设备所有者,您必须执行NFC数据访问 当设备处于运行状态时,从编程应用程序传输到设备 这是一种无远见的状态。” 但我不明白这意味着什么,或者更确切地说,我必须做什么。有人能帮我吗,或者告诉我该怎么做Android 安卓5.0(及其他)上的设备所有者,无根设备,NFC提供设备,android,nfc,android-5.0-lollipop,provisioning,Android,Nfc,Android 5.0 Lollipop,Provisioning,我需要知道如何在Android 5.0、4.4和4.3(?)中将我的应用程序设置为设备所有者。我已经为根设备()成功地尝试了该方法。我在android 5.0和4.4.2 emulator以及CyanoGen AOSP 4.4.4(所有根设备)中看到了这一点。但我必须在其他非根设备上尝试这一点,在Android 5.0开发者API中,您可以阅读这一点 “要部署和激活设备所有者,您必须执行NFC数据访问 当设备处于运行状态时,从编程应用程序传输到设备 这是一种无远见的状态。” 但我不明白这意味着什
另外,我知道什么是NFC以及它是如何工作的,但我不知道如何使用它来解决这个问题。创建一个NFC触发器应用程序,并将其安装在一个拥有NFC的设备上(而不是你想让你的应用程序成为设备所有者的设备上) 以下是NFC触发器的代码
public class MainActivity extends Activity implements CreateNdefMessageCallback {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcAdapter.setNdefPushMessageCallback(this, this);
}
@Override
public NdefMessage createNdefMessage(NfcEvent event) {
try {
Properties p = new Properties();
p.setProperty(
DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME,
"apk package name");
p.setProperty(
DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION,
"app download url");
p.setProperty(
DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM,
"apk checksum");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
OutputStream out = new ObjectOutputStream(bos);
p.store(out, "");
final byte[] bytes = bos.toByteArray();
NdefMessage msg = new NdefMessage(NdefRecord.createMime(
DevicePolicyManager.MIME_TYPE_PROVISIONING_NFC, bytes));
return msg;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
对于校验和,运行以下命令
cat your_device_owner_app_name.apk | openssl dgst-binary-sha1 | openssl base64 | tr'+/'-| tr'-d'='
- 在NFC触发器代码中粘贴生成的校验和
- 在设备上编译并运行NFC触发器应用程序
您的应用程序将被下载并作为设备所有者安装。如果需要,还可以使用adb设置设备所有者,如下所述:
See.TK我以前试过很多次,但我的设备的nfc芯片出现了一些问题。我更换了设备,现在可以正常工作了。这对我有帮助是的,这项工作,我试过了,很好。这就是我所需要的,在这几天里,我尝试了NFC和非NFC的其他方法。我刚刚找到了一个不使用根和NFC标记的方法来进行配置,然后我开始测试that@alex_au请分享您发现的新方法,谢谢。是的,当然,您必须以新的意图复制TAG_DISCOVERED操作,并在此添加额外内容:
NfcAdapter.EXTRA_TAG
,NfcAdapter.EXTRA_NDEF_MESSAGES
和NfcAdapter.EXTRA_ID
,使用正确的值,我创建了这个意图,引用android在发现新标签时发送的意图,并用正确的数据填充它们。另一个开发解决方案是使用。不需要root、NFC甚至两个设备。嗨@Sunil Jain,你的校验和是正确的。在您的dropbox url中,将dl=0替换为dl=1,然后重试。:)最好在这里描述解决方案并将其归因于原始来源。