我没能找到这个问题的答案。为什么以编程方式从一个模拟器实例发送到另一个模拟器实例的数据 SMS 的长度在接收端被截断?
在这里,我从 emulator-554 向 emulator-556 发送了 20 个字节,但是 emulator-556 接收仅 12 个字节:
/** Send data SMS between two emulators from 15555215554 to 15555215556. */
private void sendSMS()
{
final int udLength = 20; // SMS user data length in bytes
Log.d("SMS TEST", "SMSActivity.sendSMS ud.length=" + udLength);
byte[] payload = new byte[udLength];
for (byte i = 0; i < udLength; i++)
{
Log.d("SMS TEST", "payload[" + i + "]=" + i);
payload[i] = i;
}
Intent smsSentIntent = new Intent("SMS_SENT");
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, smsSentIntent, 0);
String destTelephone = "15555215556";
SmsManager smsMgr = SmsManager.getDefault();
smsMgr.sendDataMessage(destTelephone, null, (short) 32766, payload, sentPI, null);
Log.d("SMS TEST", "SMSActivity.sendSMS COMPLETED!");
}
登录发送器模拟器:
02-25 19:31:00.793:D/SMS 测试(257):onCreate
02-25 19:31:00.793:D/SMS 测试(257):onResume
02-25 19:31:00.823:D/SMS 测试(257):SMSActivity.sendSMS ud.length=20
02-25 19:31:00.823: D/SMS 测试 (257): payload[0]=0
02-25 19:31:00.823: D/SMS 测试 (257): payload[1]=1
02-25 19:31:00.823: D/SMS 测试 (257): payload[2]=2
02-25 19:31:00.823: D/SMS 测试 (257): payload[3]=3
02-25 19:31:00.823: D/SMS 测试 (257): payload[4]=4
02-25 19:31:00.823: D/SMS 测试 (257): payload[5]=5
02-25 19:31:00.823: D/SMS 测试 (257): payload[6]=6
02-25 19:31:00.823: D/SMS 测试 (257): payload[7]=7
02-25 19:31:00.833: D/SMS 测试 (257): payload[8]=8
02-25 19:31:00.833: D/SMS 测试 (257): payload[9]=9
02-25 19:31:00.833: D/SMS 测试 (257): payload[10]=10
02-25 19:31:00.833: D/SMS 测试 (257): payload[11]=11
02-25 19:31:00.833: D/SMS 测试 (257): payload[12]=12
02-25 19:31:00.833: D/SMS 测试 (257): payload[13]=13
02-25 19:31:00.833: D/SMS 测试 (257): payload[14]=14
02-25 19:31:00.833: D/SMS 测试 (257): payload[15]=15
02-25 19:31:00.833: D/SMS 测试 (257): payload[16]=16
02-25 19:31:00.833: D/SMS 测试 (257): payload[17]=17
02-25 19:31:00.853: D/SMS 测试 (257): payload[18]=18
02-25 19:31:00.853: D/SMS 测试 (257): payload[19]=19
02-25 19:31:00.904:D/SMS 测试(257):SMSActivity.sendSMS 已完成!
02-25 19:31:27.044:D/SMS 测试(257):onPause
02-25 19:31:27.583:D/SMS 测试(257):onStop
public class SmsReceiver extends BroadcastReceiver
{
/** BroadcastReceiver listener. */
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
{
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get("pdus");
Log.d("SMS TEST", "SmsReceiver.onReceive: pdus.length=" + pdus.length);
SmsMessage inboundSMS = SmsMessage.createFromPdu((byte[]) pdus[0]); // pdus.length==1
byte[] ud = inboundSMS.getUserData();
int udLength = ud.length;
Log.d("SMS TEST", "SmsReceiver.onReceive: ud.length=" + udLength);
for (int i = 0; i < udLength; i++)
{
Log.d("SMS TEST", "ud[" + i + "]=" + ud[i]);
}
Log.d("SMS TEST", "SmsReceiver.onReceive COMPLETED!");
}
}
}
登录接收模拟器:
02-25 19:31:01.593: D/SMS 测试 (258): SmsReceiver.onReceive: pdus.length=1
02-25 19:31:01.613:D/SMS 测试(258):SmsReceiver.onReceive:ud.length=12
02-25 19:31:01.613:D/SMS 测试(258):ud[0]=0
02-25 19:31:01.613:D/SMS 测试(258):ud[1]=1
02-25 19:31:01.613:D/SMS 测试(258):ud[2]=2
02-25 19:31:01.613:D/SMS 测试(258):ud[3]=3
02-25 19:31:01.613:D/SMS 测试(258):ud[4]=4
02-25 19:31:01.613:D/SMS 测试(258):ud[5]=5
02-25 19:31:01.613:D/SMS 测试(258):ud[6]=6
02-25 19:31:01.613:D/SMS 测试(258):ud[7]=7
02-25 19:31:01.613:D/SMS 测试(258):ud[8]=8
02-25 19:31:01.613:D/SMS 测试(258):ud[9]=9
02-25 19:31:01.623:D/SMS 测试(258):ud[10]=10
02-25 19:31:01.623:D/SMS 测试(258):ud[11]=3
02-25 19:31:01.623:D/SMS 测试(258):SmsReceiver.onReceive 已完成!
Data=home, Speed=Full, Latency=None。Android 开发工具包 16.0.1.v201112150204-238534Android 2.2(API 级别 8)Eclipse SDK 3.6.2
这是模拟器的问题吗?其他人可以复制这种行为吗?我被困在这个问题上太久了。非常感谢任何帮助!
最佳答案
可能与端口号有关。尽量使用小于256的端口号。
关于在两个模拟器之间发送的 Android 数据短信在传输过程中被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9440913/
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在检查一个Rails项目。在ERubyHTML模板页面上,我看到了这样几行:我不明白为什么不这样写:在这种情况下,||=和ifnil?有什么区别? 最佳答案 在这种特殊情况下没有区别,但可能是出于习惯。每当我看到nil?被使用时,它几乎总是使用不当。在Ruby中,很少有东西在逻辑上是假的,只有文字false和nil是。这意味着像if(!x.nil?)这样的代码几乎总是更好地表示为if(x)除非期望x可能是文字false。我会将其切换为||=false,因为它具有相同的结果,但这在很大程度上取决于偏好。唯一的缺点是赋值会在每次运行
我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_