安卓一些操作

Posted wwwwwwwwwwwwdi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓一些操作相关的知识,希望对你有一定的参考价值。

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 + /)

  1. 打开Android studio设置,搜索keymap
  2. keymap弹出的框里搜索class name completion
  3. 设置成你想要设置的快捷键就行了

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)

以上是关于安卓一些操作的主要内容,如果未能解决你的问题,请参考以下文章

安卓平台SQLite数据库基础操作总结

个人在AS的一些安卓适配经验

安卓9SQLiteDatabase类ContentValues 类

安卓智能手机之小部件怎么用?

安卓脚本-简介

安卓自定义View进阶-Canvas之画布操作