2009-07-05 17 views
67

私は自分のアプリを書いてほしいと思うので、少数の通話をブロックしたい。 私は使用しなければならないAPIは何ですか?androidの通話をブロックする方法

基本的には、電話が来たときに通知を受けたいと思っています。電話を切ったり、ミュートしたり、ミュートして録音したい場合は、数字を比較したいと思います。

+0

は、私は着信コールをブロックすることが可能であると考えています。試してみてください: http://stackoverflow.com/questions/7121508/android-taking-complete-control-of-phone-is-it-possible-how/7121586#7121586 –

+0

http://stackoverflow.com/a/5268927/1939564 –

+0

間違った答えを受け入れないようにしてください。受け入れられた回答が正しいものではないことが混乱するかもしれません。 – ayanami

答えて

3

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

それ以外の場合は、「連絡先」のドキュメントは探し始めるのに適していると思います。

5

これは可能であり、あなた自身でコード化する必要はありません。

着信音の音量をゼロに設定し、着信番号が空の文字列に等しい場合は、振動を無しに設定します。それは...

AndroidマーケットのアプリケーションNostalkであなたのためにちょうど完了しました。試してみてください。

+6

質問はそのようなアプリについてではありません、それはあなたの解決策で着信番号をプログラム的にブロックする方法です - 数値は何ですか? –

+1

これは難しいことではありません... SDKリファレンスを調べると、アプリに登録されているonCallStateChangeListener()があることがわかります。完了したら、IDLE、RINGINGまたはOFF_HOOKのいずれかになる可能性があるcallStateを配信します。それ以外に、リスナーがあなたに着信ナンバーを届けます...それがあなたの行動が起こるポイントです。 残念ながら、SDKは実際にはコールをドロップするオプションを提供しません。これらの関数は公開されていないため、アクセスできない方法で隠されています。 –

64

OMG !!!はい、私たちはそれを行うことができます! 深刻な調査と発見の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); 

は、すべてのすべてのすべての呼制御ソフトウェアの訪問this start point

を開発したい人の何百ものプロジェクトがあります。そして、重要なコメント(およびクレジットに)がある

簡単に:コピー&ペースト電話管理のためのソース)))

あなたのためにいくつかのより多くの情報を、マニフェストに権限を追加、AIDLファイルをコピーします。あなたが根っこをしている場合にのみ送ることができるATコマンド。システムプロセスを強制終了してコマンドを送信するよりも、電話機が電話を送受信できるように再起動する必要があります=))

私のShake2MuteCallはアップデートを受けるようになりました。

+6

それが動作しても、私にとっては少し危険があるようです。内部APIが変更されると、アプリケーションは予告なく破損する可能性があります。 –

+15

2.3ジンジャーブレッドがこれを壊します –

+7

リンクが壊れています.... –

3

android-Nでは、この機能が含まれています。

アンドロイドNは現在数ブロックのプラットフォームでサポートし、サービスプロバイダがブロックされた番号のリストを維持できるように フレームワークAPIを提供アンドロイドNのためNumber-blockingアップデートを確認してください。 既定のSMSアプリケーション、既定の電話アプリケーション、およびプロバイダのアプリケーションは、ブロック番号リストから を読み取り、ブロック番号リストに書き込むことができます。他のアプリに のリストにアクセスすることはできません。

利点は以下のとおりです。

    呼び出しでブロックされ
  1. 番号も
  2. 複数のアプリを使用することができます
  3. ブロックされた数字は、機能の復元 バックアップ&を通じてリセットされ、デバイス間で持続可能なテキスト上でブロックされています同じブロック番号リスト

詳細についてはお問い合わせandroid.provider.BlockedNumberContract

既存のプロジェクトを更新してください。

アンドロイドNプラットフォームに対するあなたのアプリをコンパイルするには、あなたがのJava 8開発キット(JDK 8)を使用する必要がある、とAndroidのメーカー2.1でいくつかのツールを使用するためには、あなたがインストールする必要がありますJava 8ランタイム環境(JRE 8)

オープンbuild.gradleあなたのモジュールのファイルと次のように値を更新:

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

    defaultConfig { 
    minSdkVersion 'N' 
    targetSdkVersion 'N' 
    ... 
    } 
    ... 
} 
+0

この投稿のリンクは無効です!どちらも404が見つかりません! – hadilq

+2

これらはhttps://developer.android.comの公式サイト –

+0

からのリンクです。このコメントの時点で、https://developer.android.com/about/versions/nougat/android-7.0.html#のリンクをご覧いただけます。番号ブロック https://developer.android。com/reference/android/provider/BlockedNumberContract.html 関連するコール審査も見つかりました:https://developer.android.com/about/versions/nougat/android-7.0.html#call_screening – jcmcbeth

関連する問題