为了告知用户可能存在的冲突,我想让我的附加组件检查是否已安装并启用了另一个加载项.如果是这样,我可以在用户的遗赠中禁用它或我自己:
function disableExtension(id) {
var man = Components.classes["@mozilla.org/extensions/manager;1"];
if (man) {
man = man.getService(Components.interfaces.nsIExtensionManager);
}
if (man) {
man.disableItem(id);
} else {
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID(id, function(addon) {
addon.userDisabled = true;
});
}
}
Run Code Online (Sandbox Code Playgroud)
但我首先要检查是否安装了某个其他附加组件.目前,我这样做如下:
if (Application.extensions) {
// Gecko 1.9.2 and older
ext = Application.extensions.get(id);
if (ext) {
// TODO check if extension is also enabled
disableExtension(id);
}
} else {
// Gecko 2.0.0 and newer
Application.getExtensions(function(extensions) {
ext = extensions.get(id);
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID(id, function(addon) {
if (!addon.userDisabled) {
disableExtension(id); …Run Code Online (Sandbox Code Playgroud) 我想首先检查记录是否存在,然后进行更新,否则进行插入.
if(record exist) {
update query}
else
{ insert query}
Run Code Online (Sandbox Code Playgroud)
我知道如何更新或插入,但不知道如何检查记录是否存在.怎么做?
我试图将文件从Finder拖到我的SWT应用程序中.在Windows和Ubuntu上,以下代码可以工作:
public class DndTest {
public static void main(final String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display, SWT.DIALOG_TRIM);
shell.setText("Drag & drop test");
shell.setSize(200, 200);
final FormLayout layout = new FormLayout();
shell.setLayout(layout);
final Label lbl = new Label(shell, SWT.NORMAL);
lbl.setAlignment(SWT.CENTER);
lbl.setText("Drop files here");
final FormData layoutData = new FormData();
layoutData.left = new FormAttachment(50, -100);
layoutData.top = new FormAttachment(50, -15);
layoutData.right = new FormAttachment(50, 100);
layoutData.bottom = new FormAttachment(50, 15);
lbl.setLayoutData(layoutData);
final DropTarget dt = …Run Code Online (Sandbox Code Playgroud) 将多个Android设备连接到我的开发机器时,很快就很难确定哪个设备来自Eclipse,因为设备名称似乎表示为其序列号.
例如,设备列表:

有没有办法显示手机型号或更改设备名称?
我很喜欢ADT rev 17的新Lint API检查,但新的API正确性检查让我感到难过.我有以下代码行:
listView.setOverScrollMode(OVER_SCROLL_NEVER);
Run Code Online (Sandbox Code Playgroud)
Lint报道了这一行:
呼叫需要API级别9(当前最小值为4)
根据文档,我应该能够在行上方添加注释,如下所示:
@TargetApi(9)
listView.setOverScrollMode(OVER_SCROLL_NEVER);
Run Code Online (Sandbox Code Playgroud)
但是,这会在Java 1.6中出现语法错误:
令牌上的语法错误,错放的构造(s)
我发现在更改设备的时区时,通过Ormlite读取的日期无法正确返回.
例如,当从阿姆斯特丹时间切换到伦敦时间时,日期应该向前移动一小时.但是,从数据库中读取日期时,它会返回相同的时间,但现在在伦敦时区.
我存储我的字段如下:
@DatabaseField(canBeNull = true)
private Date registration;
Run Code Online (Sandbox Code Playgroud) 我正在探索Android的VpnService的功能.目前,我通过在用户空间重建IP堆栈构建了一个非常基本的请求转发器:我从VpnService的输入流中读取IP数据包,解析它们,对于我不想转发的连接,我尝试重新创建那些VPN连接外部的套接字连接.
我已经明白最后一点是通过VpnService.protect()以下方式实现的:
Socket socket = new Socket();
vpnService.protect(socket);
socket.connect(new InetSocketAddress(
header.getDestinationAddress(), // From my IP datagram header
body.getDestinationPort())); // From the TCP datagram header
Run Code Online (Sandbox Code Playgroud)
不幸的是,这种方法导致VPN接口的环回.
虽然上面的代码只是阻塞并最终超时,但我通过Socket.connect(InetSocketAddress)从一个单独的线程调用来观察环回; 连接直接返回到我的VpnService的输入流,并重复该过程.
不用说,这会导致循环.我觉得这样做的原因是在创建套接字时(以及随后的调用VpnService.protect(Socket)),我还没有设置目标IP和端口.
这似乎确实如此,因为通过覆盖VpnService.protect(Socket)和 VpnService.protect(int)我的VpnService实现并在两种情况下调用超级都返回false.
如何正确保护套接字连接?
sockets vpn android packet-capture android-4.0-ice-cream-sandwich
由于我更习惯使用Eclipse,我想我会尝试从Visual Studio转换我的项目.昨天我尝试了一个非常简单的小测试.无论我尝试什么,都make失败了"多目标模式".(这类似于这个悬而未决的问题.)
我有三个文件:
Application.cpp:
using namespace std;
#include "Window.h"
int main() {
Window *win = new Window();
delete &win;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在window.h:
#ifndef WINDOW_H_
#define WINDOW_H_
class Window {
public:
Window();
~Window();
};
#endif
Run Code Online (Sandbox Code Playgroud)
Window.cpp:
#include <cv.h>
#include <highgui.h>
#include "Window.h"
const char* WINDOW_NAME = "MyApp";
Window::Window() {
cvNamedWindow(WINDOW_NAME, CV_WINDOW_AUTOSIZE);
cvResizeWindow(WINDOW_NAME, 200, 200);
cvMoveWindow(WINDOW_NAME, 0, 0);
int key = 0;
while (true) {
key = cvWaitKey(0);
if (key==27 || cvGetWindowHandle(WINDOW_NAME)==0) {
break;
}
}
} …Run Code Online (Sandbox Code Playgroud) 当我在程序中使用setall时:
BitArray bb = new BitArray(8) ;
bb.SetAll( true);
int[] dd = new int[1];
bb.CopyTo(dd, 0);
for (int i = 0; i < dd.Length; i++)
Console.WriteLine(dd[i]);
// result is -1
Run Code Online (Sandbox Code Playgroud)
但如果我为bitarray的每个元素使用set
BitArray bb = new BitArray(8) ;
bb.Set( 0,true);
bb.Set(1, true);
bb.Set(2, true);
bb.Set(3, true);
bb.Set(4, true);
bb.Set(5, true);
bb.Set(6, true);
bb.Set(7, true);
int[] dd = new int[1];
bb.CopyTo(dd, 0);
for ( int i = 0; i < dd.Length; i++)
Console.WriteLine(dd[i]);
// result is 255
Run Code Online (Sandbox Code Playgroud)
当使用设置结果为-1并且在第二个程序结果中使用setall为255时,为什么两个程序中的不同结果?
我一直使用此代码以编程方式启用移动数据:
ConnectivityManager conman = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
@SuppressWarnings("rawtypes")
final Class conmanClass = Class.forName(conman.getClass().getName());
final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField.get(conman);
@SuppressWarnings("rawtypes")
final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
@SuppressWarnings("unchecked")
final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, true);
Run Code Online (Sandbox Code Playgroud)
这很好用,除了现在Android 4.4.2,我得到这个例外:
java.lang.NoSuchMethodException: setMobileDataEnabled [boolean]
at java.lang.Class.getConstructorOrMethod(Class.java:472)
at java.lang.Class.getDeclaredMethod(Class.java:640)
at com.test.auto3gPro.ClasseConnessione.settaConnessione(ClasseConnessione.java:48)
at com.test.auto3gPro.receiver.ScreenBroadcastReceiver.onReceive(ScreenBroadcastReceiver.java:108)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5081)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这一问题?