我的应用程序拦截搜索按钮以提供与应用程序本身更相关的内容:
@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 4.0于2011年12月推出Nexus S时,我们进行了一些性能测试:http:
//greendao-orm.com/2011/12/17/sql-performance-in-android-4-0/

令人惊讶的是,在同一部手机上更新到Android 4.0之后,UPDATE和INSERT性能下降了一半(!).我们没有时间进一步调查,但也许其他人也这样做了?
可以推测,文件系统已经改变等等,但我正在寻找确凿的事实.;)
我正在为Android 2.2及更高版本开发应用程序.我使用伟大的ActionBarSherlock(谢谢你,Jake Wharton !!)来使用预ICS设备上的操作栏.
虽然动作栏看起来很棒,但所有其他gui元素都具有设备默认主题的外观(在我的例子中为HTC Sense 3).
是否有可能使用Holo.Dark.Theme在所有Android设备上设置我的(> = Android 2.2)应用程序样式?
我用Android 4.0.3编译我的应用程序,minSDK版本是8.
我一直在尝试创建一个在文本下模糊形状的自定义视图.问题是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 4.0为智能手机带来了drm框架.我有兴趣编写一个播放受DRM保护的视频的代码,但找不到足够的信息.
ActionBar如果活动的参数" uiOptions"设置为" splitActionBarWhenNarrow",则android 可能会拆分为顶部和底部栏,请注意此参数仅在ICS中有效.
Honeycomb使用操作栏为多选列表项引入了一种新方法.当项目处于按住状态时,列表变为多选模式,操作栏可用于完成某些操作.操作栏设置继承自列表活动,即,如果活动具有拆分操作栏,则多选也将具有,并且如果活动仅具有顶栏,则多选将符合该选项.
问题是,是否可以在活动中只有一个顶部操作栏,当列表变为多选模式时,以编程方式拆分操作栏?
谢谢!
所以我正在为我的应用程序从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.
当我在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设备上设置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)
但这没效果.所以我要问的是:
编辑
我忘了提到我需要指定VPN类型(PPTP,L2TP,L2TP/IPSec PSK或L2TP/IPSec CRT).
我试图获取设备的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
android ×10
android-4.0-ice-cream-sandwich ×10
blur ×1
drm ×1
ip-address ×1
performance ×1
sqlite ×1
vpn ×1