我希望在设备切换网络时收到通知,但由于一些奇怪的原因,尽管文档和SO上的各种示例,这个特定的操作永远不会被发送到我的接收器.
这是我的代码
接收器:
BroadcastReceiver connectedToLocalWifiReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
Log.d(TAG, "ACTION='" + action +"'"); //<-- WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION never turns up here
if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) {
if (intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false)){
//this block of code is never called
} else {
// ditto for this block
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
注册:在我连接到网络之前的代码中,我注册了我的接收器.我已经尝试将其注册到其他操作并且它们确实出现了(ConnectivityManager.CONNECTIVITY_ACTION例如)但是SUPPLICANT_CONNECTION_CHANGE_ACTION我什么都没得到.
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
registerReceiver(connectedToLocalWifiReceiver, intentFilter);
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
Run Code Online (Sandbox Code Playgroud)
所以在这一点上,wifi实际上与其当前网络断开连接并连接到我指定的那个,但它没有广播任何东西.
我看不出任何明显错误,但必须遗漏一些非常重要的东西.
我的清单权限是这样设置的,虽然我没有看到,如果它实际上正确地进行了wifi切换,权限可能与它有任何关系了:
<uses-permission android:name="android.permission.INTERNET" /> …Run Code Online (Sandbox Code Playgroud) 我怀疑这已经在某处得到了回答,但我找不到它,所以...
我需要从一个更大的字符串中的两个标记之间提取一个字符串,其中第二个标记可能会再次显示... ...(伪代码...)
myString = "A=abc;B=def_3%^123+-;C=123;" ;
myB = getInnerString(myString, "B=", ";" ) ;
method getInnerString(inStr, startToken, endToken){
return inStr.replace( EXPRESSION, "$1");
}
Run Code Online (Sandbox Code Playgroud)
所以,当我使用表达式" .+B=(.+);.+" 运行时,我得到"def_3%^ 123 + - ; C = 123;" 大概是因为它只是寻找';'的最后一个例子 在字符串中,而不是在第一个停止.
我尝试使用(?=)搜索第一个';' 但它给了我相同的结果.
我似乎找不到一个regExp引用来解释如何指定"NEXT"令牌而不是最后一个令牌.
任何和所有的帮助非常感谢.
关于SO的类似问题:
我怀疑这里的解决方案可能很简单,但我很难过......
// Create the buffered image.
BufferedImage bufferedImage = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
// fill image data (works fine)
ImageIO.write(bufferedImage, "JPG", f1); // works fine
ImageIO.write(bufferedImage, "PNG", f2); // works fine
ImageIO.write(bufferedImage, "GIF", f3); // this returns false, creates a broken gif file, but fires no exceptions
Run Code Online (Sandbox Code Playgroud)
ImageIO.write()对GIF 不起作用?这是对gif作为专有Compuserve事物的某种回归吗?或者我只是愚蠢(我猜它是最后一个:))
我有一个Flex对象,它从服务器收集DTO.除了作为HashMap的字段外,所有字段都正确填充.它到达为null.我试过给它一个ArrayCollection和Dictionary类型,但是没有修复它.
有谁知道Java HashMap和Flex之间是否存在固有的不兼容性?
如果没有,我可能在这里做错了什么?我正在查看我的jboss控制台,我看到数据在交付给客户端之前在服务器端正确填充.但是,当它到达客户端时,该字段为空.我准备好自杀了.
好的,所以,我得到了信号通过但由于某种原因,该过程在收到信号后存在.
如果我在创建套接字之前添加无限循环(while(1)),那么它按规定工作.所以......当我发出kill命令时,套接字代码中的某些东西就会退出.
我不知道它会是什么.如果没有kill,进程就会无限期地接受连接并向客户端发送消息.为什么kill(以及后面的变量的增量)会引发套接字退出循环并让进程结束?
套接字代码在......下面
[再次编辑]
$SIGNAL = 0;
sub sigHandler{
#&logData("SIGNALED");
$SIGNAL++ ;
}
$SIG{"USR1"}=\&sigHandler;
# Create a new socket, on port 9999
my $PORT = 9999;
print ("opening connection on port $PORT");
$lsn = new IO::Socket::INET(Listen => 1,
LocalPort => $PORT,
Reuse => 1,
Proto => 'tcp' );
#or die ("Couldn't start server: $!");
# Create an IO::Select handler
$sel = new IO::Select( $lsn );
# Close filehandles
close(STDIN); close(STDOUT);
warn "Server ready. Waiting for connections . . . …Run Code Online (Sandbox Code Playgroud) 我有一个DatePicker几乎按预期工作除了使用+/-按钮而不是使用+/-按钮时,用户在字段中输入.此时,即使它显示键入的值,它的getters也会返回用户输入之前的日期信息.一旦用户点击+或 - 它更新.
我看到一个采用值的更新方法,这不是我想要的.当用户点击"继续"按钮(与DatePicker无关)时,我想激发它重新检查它的值.我可以将一个听众附加到失去焦点,但我没有看到我可以调用它来重新检查它的内容.
欢迎所有想法.
编辑 只要用户将焦点移离整个对象甚至三个字段之间,DatePicker就会立即更新其值.我想,问题是当屏幕上没有其他任何可以聚焦的东西时,如何强迫焦点远离它.我正在尝试关注我的继续按钮,但由于某种原因拒绝关注.如果有人知道,也愿意更多地了解这一点.
将常规像素转换为DIP的公式是什么?
假设我有在它设计的目的是为银河标签(例如),这是600x1024实际像素Photoshop文档.
这些与DIP之间的比例是多少?我不清楚Android如何翻译它.
我想使用DIP(而不是像素),以便它在其他设备上缩放以显示"ok",但我主要关心的是在此分辨率下使其像素完美,我的目标是测量Photoshop中元素的位置和然后得到一个确切的翻译,说明DIP需要在Tab上进行相同的布局.
我有一个WebView,我正在加载facebook sharer php页面.此页面没有任何形式的确认,只需在用户共享或取消后关闭窗口即可.
由于它被加载到Web视图中,没有什么可以"关闭"perse,所以,我需要检测窗口试图关闭并对该回调进行操作.
从我的各种搜索看来,处理这个的方法是通过WebChromeClient.所以,我正在尝试以下内容,但回调从未被调用过.我显然缺少一些东西,但不知道是什么.它*感觉就像onCloseWindow事件应该是Overriden,但这会导致eclipse(合理地)抱怨我需要超级实例,文档似乎没有建议这样做.
所有帮助赞赏.
[编辑]哦,我只是尝试交换动作的顺序,在调用url之前设置WebChromeClient,并且(如我所料)没有以任何方式改变行为.
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.setWebViewClient(new WebViewClient());
webview.loadUrl("http://www.facebook.com/sharer/sharer.php?u=http://EXTRACTED.com?img_id=abc");// + getIntent().getStringExtra("userId"));
WebChromeClient wbc = new WebChromeClient(){
public void onCloseWindow(Window w){
Log.d(TAG, "Window trying to close");
}
};
webview.setWebChromeClient(wbc);
Run Code Online (Sandbox Code Playgroud) 我有一个位图,我正在切出一个多点多边形.我很好奇是什么正确的过程是采取任意形状内的像素并将其复制到新的位图,其他像素是透明的.目标是允许用户跟踪形状,然后删除多边形外的所有内容.
我已经解决了多边形部分(作为一个点数组),但现在我很难过如何将所选像素传输到新的位图.
TIA
我试图找出如何使用Canvas在一个大的白色表面上绘制一个小图形(并不重要).问题是,如果我从一个大的空Bitmap开始,当我使用ARGB_8888制作一个可变副本时,Android会立即耗尽内存.我很好奇我是否遗漏了某些内容,或者由于Android中的内存限制,实际上无法将小图形合成到大的白色表面并将其保存为PNG或JPG.
android ×6
bitmap ×2
java ×2
android-wifi ×1
apache-flex ×1
datepicker ×1
hashmap ×1
perl ×1
polygon ×1
regex ×1
regex-greedy ×1
shape ×1
signals ×1
webview ×1