Articles of android

ConnectionTimeoutException与SSLException之间的区别,消息“Connection timed out”

在我的Android代码上(使用Apache HTTP Client)我已经设置了以下参数: HttpConnectionParams.setConnectionTimeout(params, 30 * SECOND_IN_MILLIS); HttpConnectionParams.setSoTimeout(params, 30 * SECOND_IN_MILLIS); 我正在连接到HTTPS网络服务。 在慢速网络上,我在预期的30秒后得到一个ConnectionTimeoutException (然后我重试); 但是有“少数”的情况(没有我能观察到的模式),我得到以下任何一种: javax.net.ssl.SSLException:读取错误:ssl = 0xe71160:系统调用期间的I / O错误,连接超时javax.net.ssl.SSLException:写入错误:ssl = 0xe71160:系统调用期间的I / O错误,Broken管 我从SO获得了这个代码,它仍在测试中: registry.register(new Scheme(“https”, SSLCertificateSocketFactory.getHttpSocketFactory(30 * SECOND_IN_MILLIS, null), 443)); 我可以理解连接建立超时和套接字超时 – 我的查询是否真的需要SSL的第3次超时? 目的与SO_TIMEOUT有何不同? PS:这些例外似乎是在读取/写入数据时出现的 – 这应该导致数据丢失 – 但我也观察不到。

Android Intent:-Use Intent从活动传递类对象

可能重复: 如何使用Intents将对象从一个Android Activity发送到另一个? 当一个Activity调用另一个Activity时,我想将一个类对象从一个Activity传递给另一个。 我试图使用Intent.putExtra(name, value)来实现,但后来我没有Intent.getExtra(name)方法。 有很多方法,比如getStringExtra(name) , getDataExtra(name)等,但是我在putExtra的值中putExtra是一个类对象,它有很多不同的值,如String,Data和int。 如何通过该课程?

用户更改了Facebook的访问令牌,如何获取访问令牌的回拨?

我正在使用Facebook SDK 4.2。 我已经实现了AccessTokenTracker接口,如果更改了令牌,它将正常工作。 我的问题是:如果用户使用publish_permission从Android应用程序发布内容。 然后我从我的Facebook帐户中删除该权限。 现在在app中,令牌返回 AccessToken accessToken = AccessToken.getCurrentAccessToken(); 此令牌具有publish_permission,但在Facebook服务器上的权限已更改。 删除该应用程序的Facebook帐户的权限后。 我再次运行我的应用程序。 然后我按分享按钮,然后我收到错误 {FacebookGraphResponseException:(#200)需要扩展权限:publish_actions httpResponseCode:403,facebookErrorCode:200,facebookErrorType:OAuthException,message:(#200)需要扩展权限:publish_actions} 那么如何检查此令牌是否与Facebook服务器令牌匹配。

是否可以使用Butterknife在android中的espresso Test clases中注入视图?

是否可以使用Butterknife注入测试类的视图? 视图被注入到由MainActivity类创建和提交的片段中。 这是我的测试类的代码: public class MainActivityTest extends ActivityInstrumentationTestCase2 { private MainActivity mMainActivity; private Button learnButton; private Button teachButton; @SuppressWarnings( “deprecation” ) public MainActivityTest() { super(“com.example.application.app”, MainActivity.class); } protected void setUp() throws Exception { super.setUp(); mMainActivity = getActivity(); learnButton = (Button) mMainActivity.findViewById(R.id.buttonLearn); teachButton = (Button) mMainActivity.findViewById(R.id.buttonTeach); } 但是我使用Butterknife在我的片段中注入视图: public class ChooseActionFragment extends Fragment { @InjectView(R.id.buttonTeach) Button […]

在JSONObject中填充引号

我正在构建一个JSON字符串以发送到我的Web服务。 由于其中一个是用户输入的,因此可以使用双引号。 我试图逃避它来解决这个问题。 String strValue = “height of 6\””; JSONObject json = new JSONObject(); json.put(“key”, strValue.replaceAll(“\””,”\\\””)); 这里的问题是当我执行json.toString() ,我得到3个斜杠。 例如: {“key”,”height of 6\\\””} 如果我不尝试替换, json.toString()会给我打破json。 例如: {“key”, “height of 6″”} 我该怎么做才能正确? 注意:当我的网站保存此值并显示它时,它显示height of 6\” 更新: 看来罪魁祸首是json.toString() 当我调用replaceAll方法时 – 正确 – 只能转义双引号。 看来json.toString()转义斜杠。 要解决这个问题,我必须做json.toString().replace(“\\\\”, “”) 。 这引出了一个问题:为什么在地球上JSONObject会转义斜线而不是双引号?????

Robolectric + rxJava + retrofit第二次调用抛出java.io.InterruptedIOException

我正在开发和Android应用程序。 我正在使用改进(使用OkClient)进行api请求和使用Robolectric进行测试。 我的api看起来像这样: @GET(“/v1/book/{bookId}”) Observable getBook(@Path(“bookId”) int bookId); 仅仅对于Robolectric我强迫api调用是同步的。 restAdapter构建器如下所示: RestAdapter.Builder builder = new RestAdapter.Builder().setEndpoint(environment.getServerEndpoint()) .setClient(new OkClient(client)) .setExecutors(new ImmediateExecutor(), null) .setErrorHandler(new ErrorHandler()) .setRequestInterceptor(new RequestInterceptor() { @Override public void intercept(RequestFacade request) { // Always ask for JSON data request.addHeader(“Accept”, “application/json”); request.addHeader(“Content-Type”, “application/json”); } }); public class ImmediateExecutor implements Executor { @Override public void execute(Runnable command) { […]

在视图重叠的情况下控制触摸事件传播

我在尝试控制RecycleView中的触摸事件传播时遇到了一些问题。 所以我有一个RecyclerView填充一组模仿卡片堆栈的CardView(因此它们相互重叠并具有一定的位移,尽管它们具有不同的高程值)。 我目前的问题是每张卡都有一个按钮,因为相对卡位移小于按钮的高度,导致按钮重叠的情况,每当调度触摸事件时,它开始从视图层次结构的底部传播(来自儿童最高的孩子数)。 根据我读过的文章( 这个 , 这个和这个video ),触摸传播取决于父视图中的视图顺序,因此触摸将首先传递给具有最高索引的子项,而我希望仅处理触摸事件通过最顶层视图和RecyclerView的可触摸(它还必须处理拖动和拖动手势)。 目前我正在使用卡片,这些卡片知道他们在父视图层次结构中的位置,以防止错误的孩子处理触摸,但这是非常难看的方式。 我的假设是我必须覆盖RecyclerView的dispatchTouchEvent方法并正确地将触摸事件分派给最顶层的子节点。 但是,当我尝试这种方式时(这也有点笨拙): @Override public boolean dispatchTouchEvent(MotionEvent ev) { View topChild = getChildAt(0); for (View touchable : topChild.getTouchables()) { int[] location = new int[2]; touchable.getLocationOnScreen(location); RectF touchableRect = new RectF(location[0], location[1], location[0] + touchable.getWidth(), location[1] + touchable.getHeight()); if (touchableRect.contains(ev.getRawX(), ev.getRawY())) { return touchable.dispatchTouchEvent(ev); } } return onTouchEvent(ev); […]

Android RatingBar – 一团糟

我知道这听起来很不错,但感觉就像Android的UI组件和行为有时候会不合时宜。 请考虑以下XML: 屏幕截图显示了不同设备尺寸的外观: Nexus S评级栏 平板电脑评级栏 小型设备评级栏 虽然它只在预览工具中,但我可以确认它实际上是在设备上看起来的样子。 小型设备的行为令人抓狂。 指定5颗星的RatingBar如何仅显示3,为什么不缩小星星以适应窗口? 考虑到wrap_content宽度是问题,我切换到layout_width =“fill_parent”并且没有改变小设备上的外观,但它完全搞砸了Tablets(对于“numStars”为5)这么多: 我的问题是,有没有办法在尺寸方面为RatingBar获得正确的行为? 您会认为numStars或max足够,但它完全是任意的。 当RatingBar被拉伸以便它绘制更多的星星时,它会增加星星并看到如何以3的进度,它根据显示的星数绘制它? 坚持使用numStars是没有意义的! 如果没有办法从RatingBar获得逻辑性能,是否有任何替代方案,包括第三方小部件? 如果没有,我想我总是可以绘制5个ImageViews,并且只是对它进行相应的操作。 (请记住,布局中只有一个RatingBar会显示所有这些行为 – 忘记尝试使用其他小部件/组件resize,或者使用自己的样式。我知道它已经完成,但为什么这是默认行为?)

安装Android应用程序后,应用程序图标不会出现

我正在开发一个Android应用程序,当我在Android手机上安装应用程序时,应用程序图标不会出现在应用程序部分。 但它出现在应用程序管理器中,我可以进行卸载。 谷歌搜索后,有人说我需要重建我的项目,并确保可绘制资源中的应用程序图标。 我已经尝试过这个解决方案,问题仍然存在。 我创建的清单文件如下:

onTouchEvent通过Instrumentation代码

我想完成以下事项: I have two buttons. When first button is pressed, it will fire onTouchEvent on second button, thus pressing second button. 以下是触发事件的代码摘录: int test1[] = new int[2]; button2.getLocationInWindow(test1); //—>getting coordinates of second button Instrumentation m_Instrumentation = new Instrumentation(); //firing event m_Instrumentation.sendPointerSync(MotionEvent.obtain(android.os.SystemClock.uptimeMillis(),android.os.SystemClock.uptimeMillis(),MotionEvent.ACTION_DOWN,test1[0]+10, test1[1]+10, 0)); 注意 :我使用genymotion模拟器。 错误日志 : 07-08 12:47:38.743: E/InputEventReceiver(6849): Exception dispatching input event. 07-08 […]