标签: android-4.0-ice-cream-sandwich

onSearchRequested()在Android 4.x +中不再有效?

我的应用程序拦截搜索按钮以提供与应用程序本身更相关的内容:

  @Override
  public boolean onSearchRequested() {
    if (isOkToSearchWithinTheApp())
      doRelevantOwnSearch();
    return true; 
  }
Run Code Online (Sandbox Code Playgroud)

除了我的新4.1.2手机外,它在所有Android版本上都运行良好(仍然有效):在这款Android 4.x手机上,会调用名为"Google Now"的内容.

这是众所周知的(即记录在案的变更)吗?

如果是这样,有没有其他方法来"拦截"搜索按钮?

更新:我完全按照下面@ daniel_c05的建议完成,但触摸搜索按钮会产生相同的行为:引入Google搜索活动(并暂停我自己的活动,这显然不是所需的行为):

在此输入图像描述

顺便说一下,这个类似问题中接受的答案是不可接受的...那么,有没有其他方法可以"拦截"搜索按钮?

android android-4.0-ice-cream-sandwich

25
推荐指数
1
解决办法
2002
查看次数

为什么Android 4.0上的INSERT和UPDATE速度较慢?

当Android 4.0于2011年12月推出Nexus S时,我们进行了一些性能测试:http: //greendao-orm.com/2011/12/17/sql-performance-in-android-4-0/ 在此输入图像描述

令人惊讶的是,在同一部手机上更新到Android 4.0之后,UPDATE和INSERT性能下降了一半(!).我们没有时间进一步调查,但也许其他人也这样做了?

可以推测,文件系统已经改变等等,但我正在寻找确凿的事实.;)

sqlite performance android android-4.0-ice-cream-sandwich

24
推荐指数
1
解决办法
1141
查看次数

在Android <4.0上使用holo主题

我正在为Android 2.2及更高版本开发应用程序.我使用伟大的ActionBarSherlock(谢谢你,Jake Wharton !!)来使用预ICS设备上的操作栏.

虽然动作栏看起来很棒,但所有其他gui元素都具有设备默认主题的外观(在我的例子中为HTC Sense 3).

是否有可能使用Holo.Dark.Theme在所有Android设备上设置我的(> = Android 2.2)应用程序样式?

我用Android 4.0.3编译我的应用程序,minSDK版本是8.

android android-theme android-4.0-ice-cream-sandwich

24
推荐指数
2
解决办法
2万
查看次数

Android BlurMaskFilter在canvas.drawOval中没有效果,而文本模糊

我一直在尝试创建一个在文本下模糊形状的自定义视图.问题是BlurMaskFilter对我在画布上绘制的任何形状都没有影响.以下是我在构造函数中初始化Paint对象的方法:

paint = new Paint(0);
paint.setColor(0xffffffff);
paint.setMaskFilter(new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL));

mShadowPaint = new Paint(0);
mShadowPaint.setColor(0xff333333);
mShadowPaint.setMaskFilter(new BlurMaskFilter(10, BlurMaskFilter.Blur.NORMAL));
Run Code Online (Sandbox Code Playgroud)

我在onDraw()中调用这样的函数:

canvas.drawOval(mShadowBounds,mShadowPaint);
canvas.drawText("hello", x, y, paint);
Run Code Online (Sandbox Code Playgroud)

但这就是我所看到的.

椭圆形不模糊但文字模糊不清.

使用android 4.0 sdk并在4.0.4 galaxy nexus设备(英国)上进行测试.我想知道这是不是4.0.4中的一个错误,因为我在4.0和4.0.3模拟器上测试它并且它确实很好地模糊了它们,除非我做错了什么?

编辑:这是在其他平台上测试它的扩展View代码.

import android.content.Context;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

public class BlurTestView extends View{

    private Paint paint;
    private Paint mShadowPaint;
    private int size = 100;
    private RectF mShadowBounds = new RectF();

    public BlurTestView(Context context) {
        this(context, null, 0);
    }

    public BlurTestView(Context context, AttributeSet attrs) { …
Run Code Online (Sandbox Code Playgroud)

android blur android-canvas android-4.0-ice-cream-sandwich

24
推荐指数
2
解决办法
2万
查看次数

Android中DRM框架的示例/教程

Android 4.0为智能手机带来了drm框架.我有兴趣编写一个播放受DRM保护的视频的代码,但找不到足够的信息.

  1. 有没有关于使用DRM框架的教程?示例代码?
  2. 如何设置环境 - 创建内容和许可证的服务器端?
  3. 我可以在互联网上使用受DRM保护的视频进行测试吗?
  4. 插件框架声称可扩展性,但我找不到插件AI定义,也没有找到如何创建/添加自定义插件的描述

android drm android-4.0-ice-cream-sandwich

23
推荐指数
2
解决办法
1万
查看次数

如何以编程方式控制ActionBar拆分?

ActionBar如果活动的参数" uiOptions"设置为" splitActionBarWhenNarrow",则android 可能会拆分为顶部和底部栏,请注意此参数仅在ICS中有效.

Honeycomb使用操作栏为多选列表项引入了一种新方法.当项目处于按住状态时,列表变为多选模式,操作栏可用于完成某些操作.操作栏设置继承自列表活动,即,如果活动具有拆分操作栏,则多选也将具有,并且如果活动仅具有顶栏,则多选将符合该选项.

问题是,是否可以在活动中只有一个顶部操作栏,当列表变为多选模式时,以编程方式拆分操作栏?

谢谢!

android android-4.0-ice-cream-sandwich android-actionbar

23
推荐指数
1
解决办法
1万
查看次数

没有ICS仿真器的软件按钮?

所以我正在为我的应用程序从3.0到4.0进行更新,我遇到了模拟器的问题.具体来说,使用Galaxy Nexus~ish皮肤时不会出现软件按钮(我不确定它的确切位置,但它应该足够接近).

这是WXGA720,它的价值:

Hardware Back/Home keys = no
Abstracted LCD Density = 320
Keyboard Lid Support = no
Max VM Heap = 48
Device Ram Size = 1024
Run Code Online (Sandbox Code Playgroud)

第一行是最重要的,因为它告诉模拟器我们需要返回/ home的软件密钥.这可以使用WXGA800皮肤(平板电脑) - 甚至使用API​​级别14(ICS).

缺失键的屏幕截图 (不要介意屏幕截图中的jaged边缘,我将模拟器按比例缩小 - 这不会影响不显示的键)因为你可以看到它很难与模拟器交互,因为我没有后退/主页按钮.

因此,软件密钥显示为平板电脑皮肤,而不是手机.还有其他人解决了这个问题吗?

编辑

我已经更改了屏幕截图以反映最新版本的工具r16.按钮显示使用WVGA800皮肤和硬件返回/ home = no.

android android-emulator android-4.0-ice-cream-sandwich

23
推荐指数
4
解决办法
1万
查看次数

ErrnoException:isConnected failed:使用ICS更改wifi网络时EHOSTUNREACH(无主机路由)

当我在ics上使用我的应用程序后,在将我的wifi网络从networkA更改为networkB之后,所有对图像的请求都会以异常开始返回.

失败,例外

> org.apache.http.conn.HttpHostConnectException: Connection to
> https://m1.testapp.com refused    at
> org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
>   at
> org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
>   at
> org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
>   at
> org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
>   at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
>   at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
>   at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
>   at
> com.testApp.android.ws.PooledRequestProcessor$Runner.run(PooledRequestProcessor.java:298)
>   at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
>   at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
>   at java.lang.Thread.run(Thread.java:856)  Caused by:
> java.net.ConnectException: failed to connect to /109.233.153.38 (port
> 443) after 20000ms: isConnected failed: EHOSTUNREACH (No route to
> host)     at
> org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:181)
>   ... 10 more …
Run Code Online (Sandbox Code Playgroud)

android android-4.0-ice-cream-sandwich

23
推荐指数
1
解决办法
2万
查看次数

在android 4.0上以编程方式设置VPN连接

我正在以编程方式在Android设备上设置VPN连接.我成功地使用OS 2.3.5和之前的设备(我使用反射来访问隐藏的类).但是在android 4.0中,他们摆脱了旧类并使用了VPNService类.

我认为最好的起点是使用Android提供的ToyVPN示例,但我面临很多挑战.在示例代码中,他们只需要发送服务器地址:

InetSocketAddress server = new InetSocketAddress(mServerAddress, Integer.parseInt(mServerPort));
Run Code Online (Sandbox Code Playgroud)

然后通过打开频道创建VPN隧道:

tunnel = DatagramChannel.open();
Run Code Online (Sandbox Code Playgroud)

但在我的情况下,我需要发送服务器地址,用户名和密码.到目前为止,我还没有想出如何这样做.我最好的猜测是做这样的事情:

Authenticator.setDefault(new Authenticator(){
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("user","pass".toCharArray());
        }});

    try {
        // Create a DatagramChannel as the VPN tunnel.

        tunnel = DatagramChannel.open();
Run Code Online (Sandbox Code Playgroud)

但这没效果.所以我要问的是:

  1. 除了ToyVpn中使用的方法之外,还有一种方法可以通过编程方式创建VPN连接吗?
  2. 如果没有,当我想建立与服务器的连接时,如何发送凭据?

编辑

我忘了提到我需要指定VPN类型(PPTP,L2TP,L2TP/IPSec PSK或L2TP/IPSec CRT).

vpn android android-4.0-ice-cream-sandwich

23
推荐指数
1
解决办法
9287
查看次数

如何获得IPV4格式的IP_ADDRESS

我试图获取设备的IP地址,即使用WIFI或3G连接.我收到了IPV6格式的IP地址,这是不可理解的.我想要IPV4格式的IP地址.我做了google但dint找到了任何合适的解决方案.

这是我用来获取设备IP地址的代码

public String getLocalIpAddress() {
    try {
        try {
        for (Enumeration<NetworkInterface> en = NetworkInterface
                .getNetworkInterfaces(); en.hasMoreElements();) {
            NetworkInterface intf = en.nextElement();
            for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) 
            {
                InetAddress inetAddress = enumIpAddr.nextElement();
                System.out.println("ip1--:" + inetAddress);
                System.out.println("ip2--:" + inetAddress.getHostAddress());
                if (!inetAddress.isLoopbackAddress()) {


                    String ip = inetAddress.getHostAddress().toString();
                    System.out.println("ip---::" + ip);
                    EditText tv = (EditText) findViewById(R.id.ipadd);
                    tv.setText(ip);
                    return inetAddress.getHostAddress().toString();

                }
            }
        }
    } catch (Exception ex) {
        Log.e("IP Address", ex.toString());
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

ip1--:/fe80::5054:ff:fe12:3456%eth0%2
ip2--:fe80::5054:ff:fe12:3456%eth0
Run Code Online (Sandbox Code Playgroud)

它应该显示如下:

192.168.1.1
Run Code Online (Sandbox Code Playgroud)

请帮帮我..

android ip-address android-networking android-4.0-ice-cream-sandwich

23
推荐指数
2
解决办法
3万
查看次数