在Ubuntu上,可以打开的最大套接字数似乎受以下因素控制:
$ cat /proc/sys/net/ipv4/tcp_max_orphans
262144
Run Code Online (Sandbox Code Playgroud)
根据Rick Reed(来自WhatsApp)的一个演讲,这些人使用FreeBSD和ErLang在一台"单一服务器"上进行了200万次并发连接.我的理解是我们总是需要内核的一些支持.是的,看起来像FreeBSD调整了这个功能:
hw.machine: amd64
hw.model: Intel(R) Xeon(R) CPU X5675 @ 3.07GHz
hw.ncpu: 24
hw.physmem: 103062118400
hw.usermem: 100556451840
kb@c123$ uname -rps
FreeBSD 8.2-STABLE amd64
jkb@c123$ cat /boot/loader.conf.local
kern.ipc.maxsockets=2400000
kern.maxfiles=3000000
kern.maxfilesperproc=2700000
Run Code Online (Sandbox Code Playgroud)
所以,看起来像内核可以调整以支持这么多的物理连接,假设我们有足够的内存,对吗?如果是,那么它看起来很简单,那么它的炒作是什么?或者我错过了什么?
谢谢.
我知道你可以分享消息,这对Android和ios现在有效:
<a href="whatsapp://send?text=Hello world this is a message and a link http://www.example.com/image.jpg">Share with whatsapp</a>
Run Code Online (Sandbox Code Playgroud)
但是,我想通过我网站上的按钮分享图像,就像有人会从他的手机(图库)共享图像一样.无论如何这可能吗?
可以定制移动网站以允许用户在WhatsApp中将预先填写的消息共享给手动选择的联系人.这里给出的是使用自定义URL方案完成的.一个例子:
<a href="whatsapp://send?text=Hello%20World!">Hello, world!</a>
Run Code Online (Sandbox Code Playgroud)
要拨打特定号码,我们使用:
<a href="tel:0123456789">Call</a>
Run Code Online (Sandbox Code Playgroud)
同样,我们可以将WhatsApp消息发送到特定号码(或者至少打开聊天),而无需用户手动选择电话号码,而是将其作为预定义参数/属性值之一吗?
有没有办法在Android中使用AccessibilityService自动回答whatsapp视频通话?
或者有没有办法刺激点击耳机/蓝牙的呼叫应答按钮?我怎样才能获得回答按钮的ID?使用辅助功能服务执行单击
我知道从Android 8.0 Oreo开始我们有ANSWER_PHONE_CALLS权限,但对于我的项目,我想使用旧设备进行远程监控.
任何帮助,将不胜感激!
-----更新:感谢hemisphire先生和Kahbazi先生的回答,该应用程序能够接听电话,但需要成为一个系统应用才能工作!有没有办法让它成为一个没有系统应用程序的工作?没有耳机的按钮黑客?
public class AnswerCall extends AccessibilityService {
@Override
public void onAccessibilityEvent( AccessibilityEvent event )
{
if(event.getEventType() == TYPE_WINDOW_CONTENT_CHANGED)
{
if(event.getPackageName().equals("com.whatsapp"))
{
Thread thread = new Thread() {
@Override
public void run() {
try {
while(true) {
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_HEADSETHOOK);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
StringBuilder sb = new StringBuilder();
List<CharSequence> texts = event.getText();
if (!texts.isEmpty())
{
for (CharSequence s : event.getText()) {
sb.append(s);
} …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中有一个共享按钮,我想同时共享图像和文本.Gmail中工作正常,但在WhatsApp的,只有图像被发送和Facebook的应用程序崩溃.
我使用共享代码是这样的:
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Message");
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/drawable/ford_focus_2014");
try {
InputStream stream = getContentResolver().openInputStream(uri);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
Run Code Online (Sandbox Code Playgroud)
如果我使用"shareIntent.setType("*/*")"Facebook和WhatsApp崩溃.
有办法做到这一点吗?也许同时发送两条消息(WhatsApp).
提前致谢.
我在设备A中运行whatsapp(我们可以从现在开始称它为appX).我去管理应用程序 - >强制关闭以便appX关闭,我不再将appX视为正在运行的服务.
现在,5分钟后,我从另一台设备的appX(设备B)发送一条消息到设备A appX(我们杀了它的那个).以下是我测试的两个场景:
设备A与Android 2.1:它永远不会收到消息,因此我们可以说没有任何appX服务重新启动.如果手动用户重新启动应用程序,它仅接收消息.
设备A与android 2.3.6:出于一些神奇的原因,无论自appX被杀多久以来,只要我们从设备B发送消息 - >设备A获取消息,因此,appX的服务重新启动.注意:在关闭appX并且没有收到任何通知的情况下,我无法在管理应用程序中看到appX的任何正在运行的服务,因此这意味着一旦收到消息/通知,这个魔术服务就会重新启动
我知道这听起来很奇怪,很多人会说这是不可能的,但同样,这已经在这两款设备上进行了测试.
我试图完成同样的行为,所以任何帮助将不胜感激.
我有一个Callkit功能的应用程序.当我按下扬声器按钮时,它将闪烁并设置为关闭状态(有时扬声器设置为LOUD但图标仍然是OFF).当我多次点击它时......可以清楚地看到此功能的行为不正确.
然而,WhatsApp在开始时扬声器关闭,3秒后它激活它和它的工作.有没有人遇到类似的东西,可以给我一个解决方案?
我想让用户与WhatsApp小组共享URL +文本.我希望这可以从iPhone和Androids工作.但是我的应用程序是在浏览器中(它是一个网站).我目前正在研究两种选择,但两者都存在问题:
1)第一个潜在的解决方案 - 直接从浏览器共享.
我检查了WhatsApp的URL架构并使用以下URL通过我的应用程序共享:
"whatsapp://send?text=Hello%2C%20World!"
Run Code Online (Sandbox Code Playgroud)
但是这种方法存在一些问题:
abid).首先,我不知道如何访问用户的abid?其次,我试图发送给一个小组,在这种情况下没有abid(对吗?),因此似乎不可能这样做.真的吗?此外,Android应用程序会发生什么?对于一群人来说,与abid相比有什么可比性,我该如何得到它?2)第二个潜在的解决方案 - 创建一个与基于浏览器的应用程序完全相同的本机应用程序,但是这个特定部分(我们执行"共享")是原生的.
但是,在我看来,在这种情况下,我遇到的问题与上述问题非常相似:
我想获取WhatsApp个人资料图片和编号,但使用contentResolver我将使用以下代码段获取名称和编号.
private void showContactWhatsApp(){
ContentResolver cr = getContentResolver();
Cursor contactCursor = cr.query(
ContactsContract.RawContacts.CONTENT_URI,
new String[]{ContactsContract.RawContacts._ID,
ContactsContract.RawContacts.CONTACT_ID},
ContactsContract.RawContacts.ACCOUNT_TYPE + "= ?",
new String[]{"com.whatsapp"},
null);
ArrayList<String> myWhatsappContacts = new ArrayList<>();
if (contactCursor != null) {
if (contactCursor.getCount() > 0) {
if (contactCursor.moveToFirst()) {
do {
//whatsappContactId for get Number,Name,Id ect... from ContactsContract.CommonDataKinds.Phone
String whatsappContactId = contactCursor.getString(contactCursor.getColumnIndex(ContactsContract.RawContacts.CONTACT_ID));
if (whatsappContactId != null) {
//Get Data from ContactsContract.CommonDataKinds.Phone of Specific CONTACT_ID
Cursor whatsAppContactCursor = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME},
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", …Run Code Online (Sandbox Code Playgroud) 我想开发一个移动应用程序并使用像用户注册的whatsapp.现在我记得几年前讨论过的安全问题.Whatsapp用于通过电话号码和IMEI对用户进行身份验证.现在当然这不是很安全,但我真的不知道如何更安全.
现在我已经很久没有听到有关Whatsapp身份验证问题的消息,所以我猜他们现在已经有了安全的方法.你知道Whatsapp今天是怎么做到的吗?