我是抓取 nordic nrftoolbox 的 source code。
https://goo.gl/5WxUPB
任务是利用这 code 抓取 bin file 来做 firmware 更新,客户嫌麻烦说还要loader
去选择档案,想要写死路径。
dfuActivity 主要是在 663 行
final Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
最后在 433 行回传,可以看到里面大部分就只是利用 loader 选取的 data来获取 uri
分析uri对以下填值
mFileType = mFileTypeTmp;
mFilePath = null;
mFileStreamUri = null;
接着我会经过 452 行的 else if,最后准备要更新时要执行的地方是 743行
里面的参数就是这些变量。
我用官方没改的 code ,在449行用
Log.d("",""+uri.toString);印出已经load下的档案uri
content://com.android.externalstorage.documents/document/primary%3ANordic%20Semiconductor%2Fnrf52832_xxaa_s132.bin
接着我开始改 code
我就直接用上面这串
利用 Uri.parser("xxxxx") 来丢到 743行的 mFileStreamUri
最后APK却说找不到档案,我怀疑是 URI的转换问题让APK无法找到bin file,另
一个可能就是464行的restartLoader的问题,我把455~464 663~665 mark掉了。
也就是不透过其他APP例如档案管理APK来加载档案,直接写死要上传的档案的uri
既然客户希望按个 button,就可以不用开启 loader 选取档案,那么有没有办法是
下了
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
startActivity(intent, SELECT_FILE_REQ));
可以不用由客户去选档,就指定给他路径了呢?
还有我的URI可以这样 assign吗...?