Wenn die SMS -Nachricht Leerzeichen im Zeichen hat, wird sie nicht gesendet [geschlossen]
Posted: 06 May 2025, 10:23
Code: Select all
import pandas as pd
import subprocess
import time
def send_sms():
df = pd.read_excel("contacts.xlsx")
for index, row in df.iterrows():
print(f"Обработка номера: {row['Номер']}")
try:
# 1. Открываем через универсальный intent (без указания конкретного Activity)
subprocess.run(
f'adb shell am start -a android.intent.action.SENDTO '
f'-d sms:{row["Номер"]} '
f'--es sms_body "{row["Сообщение"]}" '
f'--ez exit_on_sent true',
shell=True,
check=True
)
# 2. Увеличенное ожидание для One UI Core
time.sleep(8) # Минимум 8 секунд для стабильной работы
# 3. Специальная последовательность для Samsung
subprocess.run('adb shell input keyevent 4', shell=True) # Сначала BACK
time.sleep(1)
# 4. Точный тап по координатам (для SM-M315F)
subprocess.run('adb shell input tap 1008 2134', shell=True)
time.sleep(1)
# 5. Финишное подтверждение
subprocess.run('adb shell input keyevent 23', shell=True) # DPAD_CENTER
print(f"✓ Сообщение отправлено на {row['Номер']}")
except Exception as e:
print(f"✕ Ошибка: {str(e)}")
# Альтернативный метод через broadcast
subprocess.run(
f'adb shell am broadcast '
f'-a com.samsung.android.messaging.SEND_SMS '
f'--es recipients "{row["Номер"]}" '
f'--es text "{row["Сообщение"]}"',
shell=True
)
time.sleep(4) # Обязательная пауза между сообщениями
if name == "main":
# Предварительные настройки ADB
subprocess.run('adb shell settings put global window_animation_scale 0', shell=True)
subprocess.run('adb shell settings put global transition_animation_scale 0', shell=True)
send_sms()