android 开发中会遇到的问题(一)
来源:互联网 发布:淘宝客服需要会哪些 编辑:程序博客网 时间:2024/05/29 07:06
博客:http://blog.csdn.net/zhuqiang1002
邮箱:zhuqiang5138@126.com
1、android Activity跳转黑屏、白屏或闪屏
原因分析
这是因为我们在styles文件里给Activity添加里跳转动画,而有些手机判断这个的时候会出问题,导致黑屏、白屏或闪屏。
解决方案
styles文件里动画置null
<style name="Theme" parent="android:Theme"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item></style><style name="Animation"> <item name="android:activityOpenEnterAnimation">@null</item> <item name="android:activityOpenExitAnimation">@null</item> <item name="android:activityCloseEnterAnimation">@null</item> <item name="android:activityCloseExitAnimation">@null</item> <item name="android:taskOpenEnterAnimation">@null</item> <item name="android:taskOpenExitAnimation">@null</item> <item name="android:taskCloseEnterAnimation">@null</item> <item name="android:taskCloseExitAnimation">@null</item> <item name="android:taskToFrontEnterAnimation">@null</item> <item name="android:taskToFrontExitAnimation">@null</item> <item name="android:taskToBackEnterAnimation">@null</item> <item name="android:taskToBackExitAnimation">@null</item></style>
然后在AndroidManifest文件的activity添加主题android:theme="@style/Theme"。
参考链接
http://blog.csdn.net/menglele1314/article/details/45841073
2、android 集成支付宝移动支付SDK,在未安装支付宝钱包的情况下,报错4000
原因分析
支付宝sdk,肯定是有判断是否安装了支付宝钱包逻辑的,如果未安装支付宝钱包,需要跳转到网页版支付页面
解决方案
在AndroidManifest.xml 文件中配置如下代码:
<!-- 支付宝支付 Web版本 --><activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden" ></activity><activity android:name="com.alipay.sdk.auth.AuthActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" ></activity>
3、android 如何直接使用系统自带浏览器下载文件
原因分析
简单的apk升级功能,若有新版本,跳转浏览器下载即可,但是往往手机上安装了多款浏览器,会跳出选择浏览器界面,如果默认就只用系统自带的浏览器呢 就不会弹出选择界面
解决方案
Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_url = Uri.parse("http://www.baidu.com"); intent.setData(content_url); intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");startActivity(intent);
4、android H5使用GPS定位
原因分析
当然是没有编写对应的代码喽
解决方案
设置 WebSettings 和 WebChromeClient
webSettings.setDatabaseEnabled(true);String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();// 启用地理定位webSettings.setGeolocationEnabled(true);// 设置定位的数据库路径webSettings.setGeolocationDatabasePath(dir);// 最重要的方法,一定要设置,这就是出不来的主要原因webSettings.setDomStorageEnabled(true);
// 配置权限private class MyWebChromeClient extends WebChromeClient{@Overridepublic void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback){callback.invoke(origin, true, false);super.onGeolocationPermissionsShowPrompt(origin, callback);}}
5、android 为啥PopupWindow中的ListView的item点击没有效果
原因分析
当前PopupWindow没有获取到焦点
解决方案
设置 setFocuable(true)
当然如果设置了这个属性的话 某些手机会有 父类窗口 控件无法点击的问题,所以只能舍弃PopupWindow 使用其他方法
如:自定义View显示\隐藏 加上动画 效果和PopupWindow一样一样的 但是没有那么多的事情
6、android 普通的ListView中的Item无法点击
原因分析
子控件中 有如ImageButton、Button、CheckBox等有强占焦点的控件,把焦点获取了
解决方案
在Item布局的根布局加上
android:descendantFocusability="blocksDescendants"
或者在给其他控件就加上
android:clickable="false"android:focusable="false"android:focusableInTouchMode="false"
7、android WebView中的输入框无法输入数字或字母
原因分析
1、一个Activity有多个WebView, 导致焦点混乱,或者如:http://blog.csdn.net/zhangweiwtmdbf/article/details/39963705
2、setOnKeyListener方法写的不规范导致,输入法里面的按钮 也是走 onKey监听的
解决方案
1、修改对应WebView的setOnTouchListener方法,如下:
// 解决输入框不能输入的bug mWebView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_UP: v.requestFocusFromTouch(); break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_CANCEL: break; } return false; } });2、规范setOnKeyListener方法,如下:
webview.setOnKeyListener(new OnKeyListener(){@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event){if (event.getAction() == KeyEvent.ACTION_DOWN){if (keyCode == KeyEvent.KEYCODE_BACK){cwGoBack();}else{ // 这个一定要写return false;}}return true;}});
8、android ViewPager嵌套后子ViewPager不能滑动
原因分析
嵌套子ViewPager的滑动事件被父ViewPager拦截
解决方案
重写父ViewPager,并在父ViewPager重载onInterceptTouchEvent方法,并返回false@Override public boolean onInterceptTouchEvent(MotionEvent motionEvent){ return false; }
9、android WebView不能上传文件或头像的问题
原因分析
android webview在默认情况下本来就是不支持网页中的文件上传功能的
解决方案
设置WebChromeClient,在WebChromeClient的实现类中覆盖文件选择的方法/** * requestCode */public static final int FILECHOOSER_RESULTCODE_N = 5173; /** * 返回的Uri */public ValueCallback<Uri> mUploadMessage_n;/** * 自定义WebChromeClient 覆写openFileChooser方法 */private class MyChromeClient extends WebChromeClient{// js上传文件的<input type="file" name="fileField" id="fileField" />事件捕获// Android > 4.1.1 调用这个方法public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){mUploadMessage_n = uploadMsg;Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.addCategory(Intent.CATEGORY_OPENABLE);intent.setType("image/*");startActivityForResult(Intent.createChooser(intent, "完成操作需要使用"), FILECHOOSER_RESULTCODE_N);}// 3.0 + 调用这个方法public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType){mUploadMessage_n = uploadMsg;Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.addCategory(Intent.CATEGORY_OPENABLE);intent.setType("image/*");startActivityForResult(Intent.createChooser(intent, "完成操作需要使用"), FILECHOOSER_RESULTCODE_N);}// Android < 3.0 调用这个方法public void openFileChooser(ValueCallback<Uri> uploadMsg){mUploadMessage_n = uploadMsg;Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.addCategory(Intent.CATEGORY_OPENABLE);intent.setType("image/*");startActivityForResult(Intent.createChooser(intent, "完成操作需要使用"), FILECHOOSER_RESULTCODE_N);}}/** * onActivityResult */protected void onActivityResult(int requestCode, int resultCode, Intent intent){super.onActivityResult(requestCode, resultCode, intent);if (requestCode == FILECHOOSER_RESULTCODE_N){Log.d(TAG, "did we get here?");if (null == mUploadMessage_n){return;}Uri result = intent == null || resultCode != Activity.RESULT_OK ? null : intent.getData();Log.d(TAG, "result = " + result);mUploadMessage_n.onReceiveValue(result);mUploadMessage_n = null;}}
- android 开发中会遇到的问题(一)
- android开发中遇到的问题【一】
- android 开发你会遇到的问题
- android蓝牙开发过程中遇到的问题(一)
- Android开发中遇到的问题集合(一)
- IOS开发中遇到的奇怪问题(也许会…
- Android开发遇到的细节问题(一)
- Android开发遇到的细节问题(一)
- Opencv开发中遇到的问题一
- Android开发中遇到的奇怪问题
- Android开发中遇到的问题
- android开发中遇到的一些问题
- Android开发中可能遇到的问题
- Android开发中经常遇到的问题
- Android 开发中遇到的问题收集
- android 开发中遇到的问题汇总
- Android开发过程中遇到的问题
- android开发中遇到的问题总结
- Python数字
- C++primer plus第六版课后编程练习答案3.1
- 更改oracle字符集
- NYOJ 952 最大四边形 (n个点求组成四边形的最大面积)
- poj1163The Triangle(动态规划)
- android 开发中会遇到的问题(一)
- ORACLE中SQL查询优化研究
- three.js详解之一入门篇
- 计算机是如何启动的?
- 对比Jquery 与 AngularJs
- Java NIO (二) Channel
- mysql dump 备份命令
- ORACLE锁机制深入理解
- 修改checkbox的样式