在本文中,您将会了解到关于Android应用程序中预加载的数据库损坏问题的新资讯,同时我们还将为您解释android应用程序中预加载的数据库损坏问题怎么解决的相关在本文中,我们将带你探索Android
在本文中,您将会了解到关于Android应用程序中预加载的数据库损坏问题的新资讯,同时我们还将为您解释android应用程序中预加载的数据库损坏问题怎么解决的相关在本文中,我们将带你探索Android应用程序中预加载的数据库损坏问题的奥秘,分析android应用程序中预加载的数据库损坏问题怎么解决的特点,并给出一些关于01_Android应用开发环境_05_签名android应用程序、android-ndk – 在Android应用程序中使用libusb:如何允许应用程序访问USB、android-studio – 你能通过Android工作室将Android应用程序作为ARC应用程序启动吗?、Android应用程序中具有RecognizerIntent的数据安全的实用技巧。
本文目录一览:- Android应用程序中预加载的数据库损坏问题(android应用程序中预加载的数据库损坏问题怎么解决)
- 01_Android应用开发环境_05_签名android应用程序
- android-ndk – 在Android应用程序中使用libusb:如何允许应用程序访问USB
- android-studio – 你能通过Android工作室将Android应用程序作为ARC应用程序启动吗?
- Android应用程序中具有RecognizerIntent的数据安全
Android应用程序中预加载的数据库损坏问题(android应用程序中预加载的数据库损坏问题怎么解决)
HttpURLConnection conexion = (HttpURLConnection) url.openConnection(); if(filePath.exists() && filePath.length() > 10000.00) { downloaded = (int) filePath.length(); conexion.setRequestProperty("Range","bytes=" + (filePath.length()) + "-"); } else conexion.setRequestProperty("Range","bytes=" + downloaded + "-"); conexion.setDoInput(true); conexion.setDoOutput(true); conexion.setUseCaches(false); conexion.connect();
…
try { totalFileLength = lengthOfFile + downloaded; progressDialog.setMax(lengthOfFile + downloaded); // downlod the file input = new BufferedInputStream(conexion.getInputStream()); output = (downloaded==0)? new FileOutputStream(filePath): new FileOutputStream(filePath,true); bout = new bufferedoutputstream(output,1024); byte data[] = new byte[1024]; while ((count = input.read(data,1024)) >= 0 && running) { downloaded += count; // publishing the progress.... //onProgressUpdate((int)(downloaded*100/lengthOfFile)); progressDialog.setProgress(downloaded); bout.write(data,count); } } catch (Exception e) { ... } finally { try { input.close(); bout.flush(); bout.close(); } catch(IOException e) { ... } }
完全下载文件后,我打开数据库并向其中添加一个表.
try { myDbHelper.myDataBase.execsql("CREATE TABLE IF NOT EXISTS FAVORITES (_id integer primary key autoincrement,MushroomID INTEGER)"); success = true; } catch (sqlException sqle) { throw sqle; }
现在,这个代码在我运行它的每个设备上运行得非常好,但我的几个用户在execsql行上得到了这个错误.好像它不是单独使用三星galaxy SII(没有投诉和随后的堆栈跟踪与任何其他手机的这个错误)但我不完全确定它只是这款手机.
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.Daleroy.fungifieldguide/net.Daleroy.fungifieldguide.activities.FungiFieldGuide}: android.database.sqlite.sqliteDatabaseCorruptException: database disk image is malformed: CREATE TABLE IF NOT EXISTS FAVORITES (_id integer primary key autoincrement,MushroomID INTEGER) at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1651) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) at android.app.ActivityThread.access$1500(ActivityThread.java:117) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3691) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) at dalvik.system.NativeStart.main(Native Method) Caused by: android.database.sqlite.sqliteDatabaseCorruptException: database disk image is malformed: CREATE TABLE IF NOT EXISTS FAVORITES (_id integer primary key autoincrement,MushroomID INTEGER) at android.database.sqlite.sqliteDatabase.native_execsql(Native Method) at android.database.sqlite.sqliteDatabase.execsql(sqliteDatabase.java:1904) at net.Daleroy.fungifieldguide.services.MushroomService.MakeFavoriteTable(MushroomService.java:118) at net.Daleroy.fungifieldguide.services.MushroomService.OpenDB(MushroomService.java:64) at net.Daleroy.fungifieldguide.activities.FungiFieldGuide.onCreate(FungiFieldGuide.java:73) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1615)
我收到了从具有sgs2的用户下载的数据库副本,并且该文件的校验和已关闭.当我用sqlite manager(firefox插件)打开时,我也看不到文件中的任何数据或数据结构.我让他直接下载数据库的副本并将其放在他的数据文件夹中,应用程序正常工作.所以问题出在下载过程中的某个地方.
解决方法
DownloadManager
来处理长时间运行的HTTP下载:
The download manager is a system service that handles long-running
HTTP downloads. Clients may request that a URI be downloaded to a
particular destination file. The download manager will conduct the
download in the background,taking care of HTTP interactions and
retrying downloads after failures or across connectivity changes and
system reboots.
以下是演示DownloadManager用法的示例项目:Android DownloadManager Example.
我想你甚至可以尝试将DownloadManager支持到以前的Android版本(如果你需要支持它们).它的源代码可以在这里找到:DownloadManager.java
01_Android应用开发环境_05_签名android应用程序
背景:
Android项目以他的包为唯一标识,如果一台设备上安装了两个包名相同的应用,后安装的应用就会覆盖前面安装的应用。
目的:
为了避免覆盖的情况,Android要求对作为成品的应用进行签名。
作用:
在Eclipse的ADT插件或Ant工具会自动生成调试证书对Android应用签名。如果要正式发布一个Android应用,必须使用合适的数字证书来给应用程序签名,不能使用ADT或者Ant工具生成的调试证书来发布。确定发布者身份。
确保应用的完整性。
在Eclipse中对Android应用签名
1、右击项目,Android Tools→Export Singned Application Package…
2、如果系统中没有数字证书,可以在窗口中选择"Create new keystore"单击按钮,填写数字证书的存储路径和密码。
3、填写完成后Next,Eclipse将会弹出让用户填写数字证书的详细信息。
4、Next,指定生成签名后的APK安装包的存储路径。
5、Finish。这样就会在指定目录下生成一个签名后的APK安装包。
一旦数字证书制作完成,以后就可以最直接使用该证书签名了。
使用命令对APK进行签名
1、创建keysrore库,JDK的安装目录下面的BIN中有一个keytool.exe工具生成数字证书。
keytool -genkeypair -alias -keyalg -validity -keystore
- -genkeypair:指定生成数字证书
- -alias:指定生成数字证书别名
- -kayalg:指定生成数字证书的算吗,使用RSA算法
- -validity:指定生成的数字证书的有效期
- -keystore:指定所生成的数字证书的存储路径
2、生成为签名的apk,Android Tools→Export Unsigned Application Package…
3、使用jarsigner命令对未签名的APK进行签名,JDK的Bin子目录下面
jarsigner -verbose -keystore -signedjar
说明:
- -verbose:指定生成详细输出
- -keystore:指定数字证书存储路径
- -singedjar:有三个参数分别是签名后apk包、未签名的APK包、数字证书的别名。
- 回车,以交互的方式输入数字证书keystore的密码。
4、使用zipalign.exe工具优化APK安装包。
zipalign -f -v 4 a.apk a_zip.apk
- -f:指定强制覆盖已有文件
- -v:指定生成详细输出
- 4:指定档案整理所基于的字节数,通常指定为4,也就是基于32为进行整理。
- a.apk、a_zip.apk:分别指定整理前的APK和整理后生成的APK。
android-ndk – 在Android应用程序中使用libusb:如何允许应用程序访问USB
1)如何让libusb在root的Android 3.1设备上运行?
2)是否可以在无根,出厂默认设备上使用libusb?
提前致谢.
P. S.至于问题1,我已经为/ dev / bus / usb尝试了chmod 666,但它说“权限被拒绝”(请注意我的设备已植根).
P.P.S. mount usbfs none / proc / bus / usb -o devmode = 0666甚至没有执行,好像我拼错了一些东西(但我没有).
我知道可以让libusb在带有USB主机的root设备上运行,但我从来没有管理它,所以我不得不将应用限制在Android 3.1并使用USB API.
解决方法
为什么你不能打开?
您需要获得Android系统(!= Kernel)的许可才能打开设备.
用Java做:
当您请求时,会向用户显示一个弹出窗口以接受或拒绝.
所以你需要在java中打开设备,并使用java解压缩fd并传递给libusb,以便它可以与设备通信.
现在libusb将如何从fd构建句柄?
更新:我维护了针对Android修改的libusb版本(有更多修复 – 在Android 5.1及更低版本上测试/工作).见https://gitlab.com/madresistor/libusb/blob/android/README
OLD LINK(DEAD LINK)这里的解决方案:
https://github.com/martinmarinov/rtl_tcp_andro-/blob/master/jni/libusb-andro/libusb/core.c#L993
android-studio – 你能通过Android工作室将Android应用程序作为ARC应用程序启动吗?
在开发过程中手动执行此操作可能非常麻烦,尤其是在发布时,您必须对同一应用程序的~15种不同风格执行相同的操作.是否有任何工作可以解决这个问题,如gradle扩展或其他东西.
解决方法
话虽这么说,因为Chrome扩展(CRX)有一个开放的规范,并且由于CRX的内容(作为ZIP文件)很容易检查,反向工程ARC Welder做什么和创建Gradle插件或其他东西不会对于那些痒痒的人来说,这是困难的.
当我检查它时,明显的可变位是icon.png(启动器图标的96×96像素版本),APK本身在vendor / chromium / crx /中,以及manifest.json文件的arc_Metadata部分.后者是您的ARC焊接设置的位置,如外形和方向.
当然,任何自制程序都需要跟踪ARC Welder的更改,以确保它能够生成有效的ARC文件.
Android应用程序中具有RecognizerIntent的数据安全
我正在使用RecognizerIntent开发一个Android语音识别应用程序.客户端担心设备与Google的语音识别服务器之间传输的数据以及该数据是否可以被截获.
我发现关于什么格式以及如何来回发送数据的文档很少.
有人知道我在哪里可以找到此信息吗?设备和Google语音识别之间的通信是否以任何方式加密/安全?
解决方法:
请参阅Google’s voice search speech recognition service,这可能会有所帮助.当然还有现在著名的http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/,它显示了Chrome浏览器中Google语音识别的工作原理.
我们今天的关于Android应用程序中预加载的数据库损坏问题和android应用程序中预加载的数据库损坏问题怎么解决的分享就到这里,谢谢您的阅读,如果想了解更多关于01_Android应用开发环境_05_签名android应用程序、android-ndk – 在Android应用程序中使用libusb:如何允许应用程序访问USB、android-studio – 你能通过Android工作室将Android应用程序作为ARC应用程序启动吗?、Android应用程序中具有RecognizerIntent的数据安全的相关信息,可以在本站进行搜索。
本文标签: