好.我正在通过我的应用发送短信.发送文本消息后,它会向服务器发送状态更新.这部分工作正常,但我遇到的问题是双重的.我不确定它们是否相关,但我认为它们是相关的.
我的应用程序可以向多个用户发送单个文本.这是代码示例...
if(phoneNumbers.length > 0 && message.getText().toString().equals("") == false)
{
for(int i=0;i<phoneNumbers.length;i++)
{
sms = SmsManager.getDefault();
try
{
sms.sendTextMessage(phoneNumbers[i], null, message.getText().toString(), null, null);
sentQuantity++;
}
catch(IllegalArgumentException e)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,它只是循环遍历一组电话号码,并一次发送一个文本.这是我的问题的一部分.如果我选择3个或更多数字来发送文本,有时并不是所有文本都会被发送.它发生得非常随机.
我认为这是因为发送每条消息之间存在延迟,但代码不会等待足够长的时间.我达到了这个假设,因为如果我使用eclipse进入程序并手动浏览应用程序,一切都可以正常工作.
我的另一个问题是当我将文本消息状态更新发送到Web服务器时.
文本消息发送后,应用程序立即连接到互联网,并通过http发布服务器告知服务器发送的文本数量.这是我的互联网代码片段......
for(int i = 0; i < postNames.length; i++)
{
nameValuePairs.add(new BasicNameValuePair(postNames[i], postValues[i]));
}
//http post
try{
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 10000;
HttpConnectionParams.setConnectionTimeout(httpParameters,timeoutConnection );
HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost(webAddress);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity …
Run Code Online (Sandbox Code Playgroud) 在 Windows 7(64 位)中,如果我搜索 %windir%\SysWoW64\cmd.exe 并打开它,它将打开 cmd.exe 的 32 位实例。从那里开始,如果我手动执行此操作,则可以运行我的批处理文件,一切顺利。
现在,当我设置任务并运行相同的批处理文件时......不起作用。可能是因为 64 位 cmd.exe 正在启动。
另一个警告...我不能只更改 Windows 环境变量以始终指向 32 位版本,因为我还有其他需要 64 位的批处理文件...
因此,不知何故,我需要能够通过 Windows 任务调度程序设置任务,其中任务本身知道启动 32 位 cmd.exe 并在该 cmd.exe 实例中运行批处理文件。
有任何想法吗?