「電話を探す」アプリケーションに似た何かを達成しようとしています。つまり、SMS を自分の電話に送信し、電話がどこにあるかを知らせる SMS で返信を受け取ります。このアプリケーションの要件は、オープン ソースであることです。
この種のアプリケーションは F-Droid リポジトリに既に存在し、FindMyPhone と呼ばれています。ただし、電話がSMSを受信すると、その返信は連絡先への返信としてストックメッセージングアプリに表示されるだけで、効果的に送信されません. これは予期された動作ではなく、コード リポジトリで、作成者がこれを修正しようとしたが、2013 年に断念したことがわかりました。
コードを調べたところ、使用する手法が単純であることがわかりました。
try {
SmsManager smsManager = SmsManager.getDefault();
// ********* SENDING SMS HERE *******
smsManager.sendTextMessage(currentFromAddress, null, txt, null, null);
// ********* SENDING SMS HERE *******
Log.d(FindMyPhoneHelper.LOG_TAG, "Sent SMS");
Thread.sleep(5000);
Log.d(FindMyPhoneHelper.LOG_TAG, "Slept 5000ms");
} catch(Exception e) {
Log.d(FindMyPhoneHelper.LOG_TAG, "Failed SMS: " + e.getMessage());
e.printStackTrace();
}
このコードは、サービスによって新しいスレッド内で呼び出される LocationListener を実装するクラスで実行されます。
この動作の理由についてのヒントはありますか? メッセージが表示されるだけで送信されないのはなぜですか? 私は別の同様のアプリケーションを見てきました: https://f-droid.org/repository/browse/?fdid=com.teamdc.stephendiniz.autoaway
これは正常に機能しており、SMS への応答は期待どおりです。主な違いは、このアプリが新しいメッセージを継続的にリッスンするサービスで実行され、マニフェストで宣言するのではなく、その場で受信者を登録することです。私にとってこれは大したことではありませんが、サービスを常に実行したくないのです。
これについて何か助けてくれてありがとう。