web-dev-qa-db-ja.com

androidで呼び出しをブロックする方法

私は自分のアプリを書きたいので、少数の番号からの呼び出しをブロックしたい。それで、私が使用すべきAPIは何ですか?

基本的には、電話がかかってきたときに通知を受けたい、ブロックしたい場合は番号を比較したい、電話を切ったりミュートしたり、できればミュートして録音したい。

69
Anurag Uniyal

ああ、神様!!!はい、WEできます!!!調査と発見に24時間を費やした後、私は自殺するつもりでした...しかし、私は「新鮮な」解決策を見つけました!

// "cheat" with Java reflection to gain access to TelephonyManager's
// ITelephony getter
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony)m.invoke(tm);

コール制御ソフトウェアを開発したい何百人もの人々すべてが この開始点

プロジェクトがあります。そして、重要なコメント(およびクレジット)があります

簡単に:aidlファイルのコピー、マニフェストへのアクセス許可の追加、テレフォニー管理のソースのコピーと貼り付け)))

あなたのためのいくつかの詳細情報。 ATルート化されている場合にのみ送信できるコマンド。システムプロセスを強制終了してコマンドを送信できますが、電話が通話を送受信できるようにするには再起動が必要です=)))

私は非常に幸せです=)今、私のShake2MuteCallは更新を取得します!

64
foryou

それは可能であり、自分でコーディングする必要はありません。

IncomingNumberが空の文字列に等しい場合、着信音の音量をゼロに設定し、振動をなしに設定するだけです。それでおしまい ...

Android Market。

5
user176167

Android-Nでは、この機能が含まれています。 check Number-blocking update for Android N

Android Nはプラットフォームで番号ブロックをサポートし、サービスプロバイダーがブロック番号リストを維持できるようにするフレームワークAPIを提供します。デフォルトのSMSアプリ、デフォルトの電話アプリ、およびプロバイダーアプリは、ブロック番号リストの読み取りと書き込みが可能です。他のアプリはリストにアクセスできません。

利点は次のとおりです。

  1. 通話でブロックされた番号はテキストでもブロックされます
  2. ブロックされた番号は、バックアップと復元機能を介してリセットおよびデバイス間で保持できます
  3. 複数のアプリが同じブロック番号リストを使用できます

詳細については、Android.provider.BlockedNumberContract

既存のプロジェクトを更新します。

Android Nプラットフォームに対してアプリをコンパイルするには、Java 8 Developer Kit(JDK 8)を使用する必要があります、およびAndroid Studio 2.1でいくつかのツールを使用するには、Java 8 Runtime Environment(JRE 8)

モジュールのbuild.gradleファイルを開き、次のように値を更新します。

Android {
  compileSdkVersion 'Android-N'
  buildToolsVersion 24.0.0 rc1
  ...

  defaultConfig {
     minSdkVersion 'N'
     targetSdkVersion 'N'
     ...
  }
  ...
}
3
Amit Vaghela

連絡先の特定の番号をボイスメールにリダイレクトできます。それはすでにサポートされています。

そうでない場合は、「連絡先」のドキュメントを参照してください。

3
Cogsy

あなたは電話イベントを聞くことでそれを行うことができます。 PHONE_STATEおよびNEW_OUTGOING_CALLへのBroadcastReceiverを用意することにより、それを行います。そこで電話番号を見つけます。

次に、Android Pからのみ動作することが保証されているため、通話を終了することを決定するとき、これは少しトリッキーです。 here

0