Articles of android 4.2 jelly bean

Android:Android 4.1模拟器从DatePicker对话框调用onDateSet两次

我的应用程序在我的Android 2.2模拟器上完美运行。 然后我决定在Android 4.1模拟器上进行测试。 DatePickerDialog看起来有点不同,出于某种原因,当我按下“完成”时, onDateSet()监听器被调用两次并导致我的应用程序出现问题。 我知道这一点,因为每当我点击“完成”时,代码中显示的日志就会被打印两次 mDateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Log.v(“onDateSet”, “ENTERED”); //rest of code… }}; Android 2.2 DatePicker Android 4.1 DatePicker

Android 4.2开发人员设置仍然不可用

当开发者网站上规定的方法不起作用时,如何访问Android 4.2的开发人员设置? 我按照Nexus 7平板电脑的说明进行操作。 我转到设置 > 关于平板电脑 ,滚动到屏幕底部,然后单击Build Number 7次。 我收到了消息“恭喜你,你现在是开发人员。” 但显然,我还不是一个人。 我检查了“设置”并一直向下滚动到底部,但没有可用的开发者选项。 我重置平板电脑并重新启动它,没有结果。 当我再次点击Build Number时,它说“不需要,你已经是开发者了”。“ 更新: 其他可能是一个问题。 有两个平板电脑用户帐户。 我用来访问开发人员设置的帐户是第二个。 第一个帐户可能未设置为开发人员。

Jelly Bean中的自定义可扩展通知(4.1)

Jelly Bean添加了对可扩展状态通知的支持。 根据http://developer.android.com/about/versions/jelly-bean.html : 除了模板化样式,您还可以使用任何远程视图创建自己的通知样式。 怎么办? 我相信你需要创建一个自定义的Notification.Style 。 这是一个抽象类,所以我需要扩展它。 我无法find有关哪些部分需要扩展的文档。 这个问题提供了一个很好的例子,说明了如何使用notificaiton.builder进行基本通知,我将此作为起点。 添加 .setContent(new RemoteViews(getPackageName(), R.layout.notification)) 为基本通知添加自定义视图,但它不可扩展。

替代api级别8中的setAlpha

我正在开发一个可以在Froyo和JellyBean上运行的应用程序。 我有一个扩展PageTransformer的类,如下所示: import android.support.v4.view.ViewPager.PageTransformer; import android.view.View; public class ZoomOutPageTransformer implements PageTransformer { private static float MIN_SCALE = 0.85f; private static float MIN_ALPHA = 0.5f; public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight = view.getHeight(); if (position < -1) { view.setAlpha(0); } else if (position <= 1) { float scaleFactor = […]

沉浸式全屏低于4.4

我有一个应用程序,我想全屏运行。 如果我有一个4.4 KitKat的设备,很容易设置SYSTEM_UI_FLAG_IMMERSIVE使应用程序纯净全屏。 但是,如果我有一个API低于4.4的设备。 我不知道如何使它全屏,好像它是一个Immersive支持的KitKat。 我可以设置全屏,并隐藏导航标记以使应用程序全屏显示,但是一旦点击屏幕,这些标记就会重置,现在将显示导航栏和状态栏。 有没有一个解决方案,我可以在JB和可能的ICS设备上“模拟”沉浸式模式(下面不是必须的)。 我有一个方法hideSystemUI,它在OnSystemUiVisibilityChangeListener触发时运行, OnSystemUiVisibilityChangeListener看起来像这样。 private void hideSystemUI() { actionBar.hide(); isMenuVisible = false; if (currentapiVersion >= android.os.Build.VERSION_CODES.KITKAT){ mDecorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE); } else{ mDecorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN); } } 我需要进行哪些更改才能使应用程序全屏显示,并且不会在每次点击时显示导航栏和状态栏,而是从顶部或底部显示幻灯片。

无法在SearchView中自动显示键盘

SearchView默认是聚焦的,但是当我尝试显示软件键盘时 – 它不会发生: InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 但是当我点击SearchView时 – 它确实如此。 为什么?

无法在Jelly Bean上读取套接字InputStream

我有一个TCP套接字连接,在Android 2.3上运行良好但现在面临Android 4.1上的一些问题。 问题是InputStream.read()方法总是返回-1(没有阻塞),就像关闭连接一样。 创建套接字: SocketFactory socketFactory = SocketFactory.getDefault(); Socket socket = socketFactory.createSocket(“c.whatsapp.net”, 5222); socket.setSoTimeout(3*60*1000); socket.setTcpNoDelay(true); 检索输入和输出流并编写一些初始数据: InputStream inputStream = new BufferedInputStream(socket.getInputStream()); OutputStream outputStream = new BufferedOutputStream(socket.getOutputStream()); outputStream.write(87); outputStream.write(65); outputStream.write(1); outputStream.write(2); outputStream.flush(); 然后,这个条件总是不受阻塞地通过: int c = inputStream.read(); if (c < 0) { Log.d(TAG, "End of stream"); } 此代码在后台线程中运行 。 它正在研究姜饼。 试图使用InputStreamReader和OutputStreamWriter而不是直接流 – 没有效果。

Android 4.2.2 – adb离线,即使在SDK升级后也是如此

编辑:修复! 看起来有很多可能的原因。 我是一个比较不寻常的…… 我将SDK Tools更新为21.1,将Platform-tools更新为16.0.1。 已通过adb versionvalidation我正在运行v1.0.31。 我的开发机器运行的是Windows 7,x64。 我有四个用于测试的4.2.2设备,一个Galaxy Nexus,带解锁的bootloader但没有root,还有Nexuses One,4,7和10,所有的库存。 Nexus One,<4.2.2,与adb配合得很好,但所有4.2.2设备在adb中显示为“离线”,我从未见过设备上弹出RSA安全对话框,即使多次重启ADB(使用kill-server ),PC和设备本身。 尝试使用不同的USB端口和电缆。 我正在使用SDK中的标准“Android ADB Interface”驱动程序,但也尝试过“Android Composite ADB Interface”和“Samsung Composite ADB Interface”驱动程序。 我甚至完全从ADT包中重新安装了SDK。 奇怪的是,我的同事可以毫不费力地在相同的设备上显示popup窗口。 我甚至复制了他的adb.exe和dll并尝试了它,但它仍然不适用于我的。 他没有从捆绑中安装; 他以传统的方式将ADT安装到Eclipse中,但我怀疑这会有所作为。 是什么赋予了?! 编辑26/02 / 2013,16:41 GMT:平台工具16.0.2的更新刚刚发布。 尚未更新ADB(仍然是v1.0.31)并仍然看到设备处于脱机状态,并且看不到RSA安全popup窗口。

在Jelly Bean模拟器上按下Enter键后,不调用onEditorAction()

我遇到了最新的Jelly Bean模拟器的行为问题。 我的应用程序中有几个EditTexts 。 当用户按下键盘上的ENTER键时, OnEditorActionListener提供特殊处理。 这一直到ICS,但现在在Jelly Bean上,监听器回调方法onEditorAction()不再被调用。 只有一个新行插入EditText 。 这可以通过这种方式复制: EditText testEditText = new EditText(context); testEditText.setOnEditorActionListener(new OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { Log.d(TAG, “onEditorAction() called”); return false; } }); addView(testEditText); 这是Jelly Bean中的一个错误吗? 还是在模拟器中? 或者是否有意改变了行为? 奇怪的是,其他人写道,该方法被调用,但带有意外的参数,在这里运行Jelly Bean的Nexus 7: onEditorAction()中的null keyevent和actionid = 0(Jelly Bean / Nexus 7)

Jelly Bean的READ_LOGS权限(api 16)

由于Android Jelly Bean不支持日志读取权限 (根据此谷歌io 2012video和此 video ),我想知道root设备(或非root设备)是否可以绕过此限制并能够读取日志。 我怎么做? 我真的需要将应用程序变成系统应用程序,还是足够生根?