安卓一些操作
来源:互联网 发布:新卡购3.0外包系统源码 编辑:程序博客网 时间:2024/06/06 09:30
1. 安卓指令加签加固流程
加签 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [keystore文件路径] -storepass [keystore文件密码] [待签名apk] [keystore文件别名]
将[]中的描述替换成keystore文件的具体信息
加固
360加固 适用于大部分
腾讯相关市场如果在提交360加固后的包提示加固不完整,则再使用腾讯应用宝中的推荐加固方式加固
2.安卓生成apk (以Android Studio为例)
Build -> Generate Signed APK
如果想要安装apk,不管是模拟器还是真机,都是需要签名的,只不过安装到模拟器的时候,Android Studio默认帮我们加签过了
如果你是第一次生成apk,点击之后会让你生成一个keystore(类似iOS打包中的CA证书)
然后根据自己实际情况,创建一个keystore文件,并保存好Master password,key store path, key store password, Alias、Alias password 用以以后生成时候使用
Master password: 第一次点击Generate Signed APK的时候,会让你设置,以后点击的时候,会让你填写认证,认证过才可以后续操作,相当于登录主密码key store path: key store存储路径key store password: key store 密码Alias: 别名Alias password: 别名密码
跟iOS只要Bundle id不变不同,安卓要在此基础上,再多一层保障,必须使用同一个keystore加签,然后加固上架之后,市场里才会认定未同一个应用
3. 获取已安装apk应用签名
这里下载最后面的签名生成工具,然后装到装有要获取签名的模拟器或真机运行即可!
4. Android studio设置按键代码提示(类似eclipse alt + /)
- 打开Android studio
设置
,搜索keymap
- 在
keymap
弹出的框里搜索class name completion
- 设置成你想要设置的快捷键就行了
5. 安卓使用webview加载带有JavaScript的网页
如果项目中有要使用webview加载url来实现页面与功能的。因为前端代码中存在js代码,而且要与用户存在一定的交互,所以,webview这里有有一些问题了。(安卓的webview,是以展示静态页面为主的!)
当然, 我们也可以做些配置来让它支持JS:
mWebView = (WebView) findViewById(R.id.rootWebview); WebSettings settings = mWebView.getSettings(); //设置允许js settings.setJavaScriptEnabled(true); //允许js代码打开别的窗口 settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setAllowContentAccess(true); settings.setAppCacheEnabled(false); settings.setBuiltInZoomControls(false); settings.setUseWideViewPort(true); settings.setLoadWithOverviewMode(true); mWebView.setWebViewClient(new MyWebViewClient()); //这里强调一下,如果要实现与js代码中弹框之类的交互,那么必须加上此代码 //这里new了一个WebChromeClient对象,没有重写任何方法,使用默认配置就可以。 mWebView.setWebChromeClient(new WebChromeClient()); mWebView.loadUrl(webviewUrl);
个人就是因为没有设置WebChromeClient
而导致点击webview的页面中的按钮而无法执行JavaScript方法。
6. webview中使用Toast提示消息报错:Can't create handler inside thread that has not called Looper.prepare()
//默认写法Toast.makeText(getApplicationContext(), "默认Toast样式", Toast.LENGTH_SHORT).show();
然后运行之后报错:Can't create handler inside thread that has not called Looper.prepare()
解决方法:
在Toast.makeText().show()方法前面添加Looper.prepare();
在Toast.makeText().Show()方法后面添加Loop.loop();
Looper.prepare();Toast.makeText(getApplicationContext(), content, Toast.LENGTH_SHORT).show();Looper.loop();
原因:
子线程只是一个普通的线程,其ThreadLoacl中没有设置过Looper,所以会抛出异常。
因为Toast在创建的时候会依赖于一个Handler,并且一个Handler是需要有一个Looper才能够创建,而普通的线程是不会自动去创建一个Looper对象,比如说在某个Activity中能new一个Handler是因为Android系统在启动一个Activity的时候会默认的创建一个Looper对象,因此不能够在子线程中显示Toast,你可以在开启的子线程中执行Looper.prepare()来构建一个Looper,然后在显示Toast,但是不要忘记执行Looper.loop()来加载这个Looper.
当然,也可以使用主线程的Looper,获取主线程的Looper的方法是Looper.getMainLooper();同时需要注意的是,同样的不能在子线程中去更新UI界面,因为Toast是相对独立于UI界面的,就好比应用虽然crash掉了,并且已经返回到home界面,但是Toast依然会在hone界面显示出来。
另外可能?: 当你的程序调用了WebView加载网页,WebView会自己开启一些线程(?)
所以,当我们要显示Toast的时候,如果在子线程中,就不得不自己生成一个Looper,或者显示在主线程中
参考: Android webview优化方法
7.安卓中String转Int
使用: Integer.parseInt(transformString)
- 安卓一些操作
- 安卓的一些图片操作小计
- 安卓数据缓存的一些操作
- 一些安卓框架
- 安卓数据库操作
- 安卓HttpClient操作
- 安卓文件操作
- 安卓数据库操作
- 安卓数据库操作
- 安卓延迟操作
- 安卓Json操作
- 安卓操作备忘
- 安卓开发一些细节
- 一些安卓的问题
- 安卓中的一些概念
- 安卓系统操作技巧
- 安卓sd文件操作
- 安卓线程操作技术
- (4.3.2.23) Compare报错: Comparison method violates its general contract!
- Redis数据库存储和过期键实现原理
- 栈帧、局部变量表、操作数栈
- Ext store不能实现同步加载的解决方法
- Docker 基于debian环境安装jdk
- 安卓一些操作
- 如果想用mybaits逆向多个条件一起查询就用
- 人群场景分析--Slicing Convolutional Neural Network for Crowd Video Understanding
- android 实现由下至上弹出并位于屏幕底部的提示框
- redis数据持久化
- 338. Counting Bits
- X86 XSAVEOPT 指令详解
- Oracle数据库导入/导出
- Java与J++、J#、C#的历史-简笔