ale*_*_au 12 android provisioning nfc android-5.0-lollipop
我需要知道如何在Android 5.0,4.4和4.3(?)中将我的应用程序设置为设备所有者.我已经成功地尝试了root设备的方法(在那里描述).我看到它在android 5.0和4.4.2模拟器以及CyanoGen AOSP 4.4.4(所有有根设备)中都很有效.但是我必须在其他非root设备上尝试这个,在Android 5.0 Developer API中你可以读到这个
"要部署和激活设备所有者,您必须在设备处于未设置状态时执行从编程应用程序到设备的NFC数据传输."
但我不明白这意味着什么,或者更好,我要做什么.有人可以帮助我,还是解释我要做的一步?
PS.我知道NFC是什么以及它是如何工作的但是我无法理解如何使用这个问题.
Spy*_*net 24
创建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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于校验和运行以下命令
cat your_device_owner_app_name.apk | openssl dgst -binary -sha1 | openssl base64 | tr'+ /'' - _'| tr -d'='
现在上传你想要在google drive或dropbox上作为设备所有者制作的应用程序apk.
使用新设备或出厂重置要将应用程序设置为设备所有者的设备.
重新启动设备,在第一个屏幕上为您的设备带来NFC触发应用程序和触摸光束传输.
您的应用程序将被下载,并将作为设备所有者安装.
归档时间: |
|
查看次数: |
10661 次 |
最近记录: |