Получить неудачно отправленное SMS на Android-устройстве Samsung с помощью приложения Tasker

Мне нужно автоматически попытаться повторно отправить неудачное исходящее SMS на устройстве Samsung Android (Galaxy S10) через некоторое время (из-за плохого качества сигнала, отсутствия кредитов, отсутствия SIM-карты и т. д.).

Я нашел приложение Tasker (любые другие способы/предложения сделать это также будут в порядке).

Я пытался поймать событие Tasker SMS Failure, но это не помогает. В мануале есть примечание к этому событию: Only works for an SMS sent by Tasker's Send SMS action. Но мне нужно поймать событие сбоя из собственного приложения SMS.

Я также пытался поймать Intent com.samsung.intent.action.SMS_SEND_FAIL с помощью Tasker. Это тоже не работает (может быть, неправильное имя намерения?).

Парсинг записи LogCat также бесполезен, потому что не содержит данных SMS (мне нужен номер телефона получателя SMS и текст, чтобы попытаться отправить повторно).

И, наконец, я попытался получить SMS из внутренней базы данных телефона, но я мог получить только успешно отправленные сообщения и входящие:

content://sms/inbox - ОК (входящее СМС)

content://sms/sent - ОК (успешно отправлено)

content://sms - ОК (входящие + отправлено)

content://sms/all - пусто

content://sms/failed - пусто

content://sms/queued - пусто

content://sms/draft - пусто

content://sms/outbox - пусто

content://sms/undelivered - пусто

Любые другие решения? Большое спасибо!

0
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот мое решение для грязи (требуется рут).

<TaskerData sr = "" dvi = "1" tv = "6.1.32">
 <Profile sr = "prof12" ve = "2">
  <cdate>1691745640721</cdate>
  <edate>1691750328401</edate>
  <flags>8</flags>
  <id>12</id>
  <limit>true</limit>
  <mid0>13</mid0>
  <nme>Failed SMS Retry</nme>
  <Time sr = "con0">
   <fh>6</fh>
   <fm>0</fm>
   <rep>2</rep>
   <repval>10</repval>
   <th>23</th>
   <tm>0</tm>
  </Time>
 </Profile>
 <Task sr = "task13">
  <cdate>1691745663215</cdate>
  <edate>1691750291965</edate>
  <id>13</id>
  <nme>Process Failed Sms</nme>
  <pri>100</pri>
  <Action sr = "act0" ve = "7">
   <code>667</code>
   <Int sr = "arg0" val = "0"/>
   <Str sr = "arg1" ve = "3">/data/data/com.android.providers.telephony/databases/mmssms.db</Str>
   <Int sr = "arg10" val = "1"/>
   <Str sr = "arg2" ve = "3"/>
   <Str sr = "arg3" ve = "3"/>
   <Str sr = "arg4" ve = "3">SELECT _id, address, body, type FROM sms WHERE [type] = 5 ORDER BY _id ASC LIMIT 1</Str>
   <Str sr = "arg5" ve = "3"/>
   <Str sr = "arg6" ve = "3"/>
   <Str sr = "arg7" ve = "3">∆</Str>
   <Str sr = "arg8" ve = "3">%SMSES</Str>
   <Int sr = "arg9" val = "0"/>
  </Action>
  <Action sr = "act1" ve = "7">
   <code>548</code>
   <on>false</on>
   <Str sr = "arg0" ve = "3">%SMSES(1)</Str>
   <Int sr = "arg1" val = "1"/>
   <Str sr = "arg10" ve = "3"/>
   <Int sr = "arg11" val = "1"/>
   <Int sr = "arg12" val = "0"/>
   <Str sr = "arg13" ve = "3"/>
   <Int sr = "arg14" val = "0"/>
   <Str sr = "arg15" ve = "3"/>
   <Int sr = "arg2" val = "0"/>
   <Str sr = "arg3" ve = "3"/>
   <Str sr = "arg4" ve = "3"/>
   <Str sr = "arg5" ve = "3"/>
   <Str sr = "arg6" ve = "3"/>
   <Str sr = "arg7" ve = "3"/>
   <Str sr = "arg8" ve = "3"/>
   <Int sr = "arg9" val = "1"/>
  </Action>
  <Action sr = "act2" ve = "7">
   <code>547</code>
   <Str sr = "arg0" ve = "3">%SMS</Str>
   <Str sr = "arg1" ve = "3">%SMSES(1)</Str>
   <Int sr = "arg2" val = "0"/>
   <Int sr = "arg3" val = "0"/>
   <Int sr = "arg4" val = "0"/>
   <Int sr = "arg5" val = "3"/>
   <Int sr = "arg6" val = "1"/>
   <ConditionList sr = "if">
    <Condition sr = "c0" ve = "3">
     <lhs>%SMSES(#)</lhs>
     <op>0</op>
     <rhs>1</rhs>
    </Condition>
   </ConditionList>
  </Action>
  <Action sr = "act3" ve = "7">
   <code>590</code>
   <Str sr = "arg0" ve = "3">%SMS</Str>
   <Str sr = "arg1" ve = "3">∆</Str>
   <Int sr = "arg2" val = "1"/>
   <Int sr = "arg3" val = "0"/>
   <ConditionList sr = "if">
    <Condition sr = "c0" ve = "3">
     <lhs>%SMSES(#)</lhs>
     <op>0</op>
     <rhs>1</rhs>
    </Condition>
   </ConditionList>
  </Action>
  <Action sr = "act4" ve = "7">
   <code>548</code>
   <on>false</on>
   <Str sr = "arg0" ve = "3">%SMS3</Str>
   <Int sr = "arg1" val = "1"/>
   <Str sr = "arg10" ve = "3"/>
   <Int sr = "arg11" val = "1"/>
   <Int sr = "arg12" val = "0"/>
   <Str sr = "arg13" ve = "3"/>
   <Int sr = "arg14" val = "0"/>
   <Str sr = "arg15" ve = "3"/>
   <Int sr = "arg2" val = "0"/>
   <Str sr = "arg3" ve = "3"/>
   <Str sr = "arg4" ve = "3"/>
   <Str sr = "arg5" ve = "3"/>
   <Str sr = "arg6" ve = "3"/>
   <Str sr = "arg7" ve = "3"/>
   <Str sr = "arg8" ve = "3"/>
   <Int sr = "arg9" val = "1"/>
  </Action>
  <Action sr = "act5" ve = "7">
   <code>667</code>
   <Int sr = "arg0" val = "0"/>
   <Str sr = "arg1" ve = "3">/data/data/com.android.providers.telephony/databases/mmssms.db</Str>
   <Int sr = "arg10" val = "1"/>
   <Str sr = "arg2" ve = "3"/>
   <Str sr = "arg3" ve = "3"/>
   <Str sr = "arg4" ve = "3">DELETE FROM sms WHERE [type] = 5 AND _id = %SMS1</Str>
   <Str sr = "arg5" ve = "3"/>
   <Str sr = "arg6" ve = "3"/>
   <Str sr = "arg7" ve = "3"/>
   <Str sr = "arg8" ve = "3">%XXX</Str>
   <Int sr = "arg9" val = "0"/>
   <ConditionList sr = "if">
    <Condition sr = "c0" ve = "3">
     <lhs>%SMSES(#)</lhs>
     <op>0</op>
     <rhs>1</rhs>
    </Condition>
   </ConditionList>
  </Action>  
  <Action sr = "act6" ve = "7">
   <code>667</code>
   <Int sr = "arg0" val = "0"/>
   <Str sr = "arg1" ve = "3">/data/data/com.android.providers.telephony/databases/mmssms.db</Str>
   <Int sr = "arg10" val = "1"/>
   <Str sr = "arg2" ve = "3"/>
   <Str sr = "arg3" ve = "3"/>
   <Str sr = "arg4" ve = "3">UPDATE sms SET [type] = 2 WHERE [type] = 5 AND _id = %SMS1</Str>
   <Str sr = "arg5" ve = "3"/>
   <Str sr = "arg6" ve = "3"/>
   <Str sr = "arg7" ve = "3"/>
   <Str sr = "arg8" ve = "3">%XXX</Str>
   <Int sr = "arg9" val = "0"/>
   <ConditionList sr = "if">
    <Condition sr = "c0" ve = "3">
     <lhs>%SMSES(#)</lhs>
     <op>0</op>
     <rhs>1</rhs>
    </Condition>
   </ConditionList>
  </Action>
  <Action sr = "act7" ve = "7">
   <code>41</code>
   <Str sr = "arg0" ve = "3">%SMS2</Str>
   <Str sr = "arg1" ve = "3">%SMS3</Str>
   <Int sr = "arg2" val = "0"/>
   <Str sr = "arg3" ve = "3"/>
   <Int sr = "arg4" val = "0"/>
   <ConditionList sr = "if">
    <Condition sr = "c0" ve = "3">
     <lhs>%SMSES(#)</lhs>
     <op>0</op>
     <rhs>1</rhs>
    </Condition>
   </ConditionList>
  </Action>
 </Task>
</TaskerData>

Другие вопросы по теме