Android--phone(5)関連機能

3594 ワード

これはphoneに関する雑文で、主にphoneに関連するいくつかの周辺機能に関連していて、内容は比較的にこまごましているので、前の文章に明確な主線があるわけではありません(例えば前
phoneの着信について、去電の流れについて)に従うことができて、比較的に乱れているように見えますが、許してください.私はできるだけ異なる小節の内容を区別します.1.着信ファイアウォールまたはブラックリストという機能については、まだ需要が大きいようですが、実現原理は、番号に基づいてデータベースで一致する番号を検索することにほかならません.ブラックリストの番号であれば、その番号の着信または削除の現在のメッセージを切ることになります.私たちがしなければならないのは番号を取得し、検索し、後続の処理(例えば電話を切る)を行うことです.番号を取得できるかどうかはブロックの鍵です.もしあなたがシステム全体を作って、相応の工事のソースコードがあれば、番号を取得するのは簡単なことです.phoneやmmsのソースコードの処理ロジックを直接修正します.RIL、Framework、packagesのどのレベルで処理しても実現できます.実現の必要に応じて処理すればいいです.サードパーティアプリであれば上記の方法では無理ですが、その場合はphoneオープンインターフェースを利用してphoneの状態を傍受したり着信番号を取得したりします.phoneが外部アプリにオープンしている状態は3種類のIDLE、OFFHOOK、RINGINGしかありません.phone内部で使用されている9つの状態は外には見えません.つまり、電話の状態が変化した場合に限って、サードパーティのアプリが電話が来たかどうかを知ることができます.360の着信拒否機能のように、まずベルを鳴らしてから切るのは、事前に番号を手に入れることができないからだと説明することができます.メールのブロックについては,主に対応するブロードキャストメッセージを受信し,その後,元のシステムメッセージを削除するか保留するかは,アプリケーションのやり方にかかっている.電話状態傍受方法のコアコードは以下の通りである.
TelephonyManager tm = ( TelephonyManager )this.getSystemService(this.TELEPHONY_SERVICE);
listener = new MyPhoneSateListener(PhoneStateActivity.this);
tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);

class MyPhoneSateListener extends PhoneStateListener{
     public void onCallStateChanged(int state, String incomingNumber) {
          super.onCallStateChanged(state, incomingNumber); 
        switch(state){ 
        case TelephonyManager.CALL_STATE_IDLE:            
            break; 
        case TelephonyManager.CALL_STATE_OFFHOOK:        
            break; 
        case TelephonyManager.CALL_STATE_RINGING:
            break; 
        } 
    }
}

2.電話の帰属地から電話が来ると、電話がどこからかかってきたのか、具体的に省市に行くことができます.現在、ほとんどの携帯電話、特にスマートフォンにはこの機能があり、実現も複雑ではありません.通常のやり方では、番号の帰属地のデータベースを携帯電話に置いて、電話がかかってきたときに番号に基づいてデータベースに行って検索すればOKですが、クエリーがproviderを通じているのか、JNIを利用しているのかは個人の実現方法次第です.この中の問題はあなたのデータベースが最新ではないかもしれませんが、もちろんリアルタイムで更新することはできません.だから、いくつかの番号は調べられないかもしれません.最近、聯通はIphoneのために185番のセグメントを開く準備をしています.これは今、多くの携帯電話が帰属地を調べられないと信じています.しかし、運営者があなたに電話の帰属地を教えてくれれば、事は簡単になります.運営者はいつも電話がどこから来たのか知っています.しかし、通常、運営者はあなたの帰属地を教えてくれません.安全なプライバシーと利益の考慮からです.3.PIN、PUK、PIN 2、PUK 2 PINコード-Personal Identification Number、SIMカードの個人識別パスワード、つまり通常指すPIN 1、android携帯電話はPINコードを開いて設定-->位置と安全-->SIMカードをロックし、そのスクリーンロックのPINコードロックとsimカードPINコードは少しも関係がなく、なぜ同じ名前で視聴を混乱させるのか分からない.PINを設置した後、起動時に正しいPIN(4-8桁の数字、通常は4桁)を入力してから使用することができ、3回のチャンス、間違いを入力するとPUKコードでロックを解除し、PUKは10回のチャンスがあり、pukはSIMカードを間違えてロックされ、営業庁に行ってカードを補充するしかない.PIN 2コードは、課金や固定ダイヤルなどの機能をオンにする場合、PINコードと同様にPIN 2も3回の機会であり、PUK 2はPIN 2のロック解除に対応しており、PUK 2がロックされている場合、PIN 2 PUK 2に関連する機能が使用できなくなるだけで、他の機能は使用可能であり、結果としてPINほど深刻ではない.最後にPUKはカードを買うときにカードに書かれていますが、PUK 2は一般的にモバイルサイトで調べなければ得られませんが、どのカードでも調べられるわけではありません.4.ネイティブ番号androidでネイティブ番号を取得するコードはこうです
    TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);   
    String tel = tm.getLine1Number();

あなたが毎回手に入れることができることを保証しないで、この本機の番号は先にsimカードの上でやっと手に入れることができて、もし事前に書いていないのは取れないならば、運営者は書くことができて、携帯電話のシステムをするのも指定の命令で書くことができて、つまり私が間違った番号を書くならば、それからあなたが本機の番号を手に入れるのは間違いで、あなたの本当の番号ではありませんて、もし間違った番号で連絡先にマッチするならば、少し奇妙なことが起こった.
5.番号マッチング通常は2つの番号が同じかどうかをどう判断するか、簡単ですね.1文字ずつ比較すればいいのですが、androidソースコードでは後ろから前へ比較して後ろの7桁しか比較されていません.外国人は後ろの7桁で区別できると思っています.私たちのハンド番号は何桁ですか.11桁です.この判断方法に問題があります.このような1301111111113511111111の番号のソースコードがどれなのか認識できない可能性があり、後続androidのコードによって完全に一致するか否かが判断されたが、デフォルトの番号マッチングルールは依然として後7位であり、現実には後7桁の番号が同じ場合も珍しく、当初Googleのメールゲートバグがその原因かどうかは不明であり、推測にすぎなかった.しばらくはここまでにしましょう.まだ些細な機能があるので、書かないでください.