Android簡易実戦教程--第二十話「ラジオ受信者を通して、電話にip番号を付加する」


寝ていません.起きたらもっと文章を書きましょう.まず、李宗偉が私のダンを破ったことをお祝いします.応援してくれたのですが、彼も容易ではないです.尊敬できる人です.本題に入ります.このページでは、カスタム放送の受信者を紹介します.
私たちは普通外で電話をかける時は、ネット電話を使うのです.電話番号があるタイプの電話なら、自動的に前にipを付けます.費用を節約する.今日はこのページでipダイヤルをシミュレートします.この機能は、放送受信者によって実現される.受信者をカスタマイズして、「傍受」電話をかける時にシステムからの放送(システムは私達が登録したラジオに対して大声で叫びます.「親愛なる、来ました.」)を受信した後、外部に電話のプレフィックス価格ip番号をダイヤルします.
まずactivityのレイアウトをください.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    android:orientation="vertical"
    >

    <EditText
        android:id="@+id/et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="   ip  "
        />
	<Button 
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="  "
	    android:onClick="click"
	    />
</LinearLayout>
EditTextは私たちが加入するip番号を入力するために使用されます.Buttonはこの番号を保存します.
カスタムブロードキャストの登録(プロファイル登録):
        <receiver android:name=".CallReceiver">
            <intent-filter >
                      <!--      ,                android.intent.action.NEW_OUTGOING_CALL,    ,        ——>
                 <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
            </intent-filter>
        </receiver>
package com.itydl.ipdialer;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;

public class CallReceiver extends BroadcastReceiver {

	//          
	@Override
	public void onReceive(Context context, Intent intent) {
		//  IP  
		//       ,           ,         
		String number = getResultData();
		
		if(number.startsWith("0")){
			SharedPreferences sp = context.getSharedPreferences("ip", Context.MODE_PRIVATE);
			String ipNumber = sp.getString("ipNumber", "");
			
			// IP                
			number = ipNumber + number;
			
			//            ,                  ip 
			setResultData(number);
			
			abortBroadcast();
		}
		
	}

}
上に放送の受信者を書いて、先に私達の保存したip番号を取り出して、また番号にプレフィックスを加えて、最後の番号を外ダイヤルに表示します.
メインイベントのコードを見てください.
package com.itydl.ipdialer;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    public void click(View v){
    	EditText et = (EditText) findViewById(R.id.et);
    	SharedPreferences sp = getSharedPreferences("ip", MODE_PRIVATE);
    	sp.edit().putString("ipNumber", et.getText().toString()).commit();
    }
    
}
参加する権限があると覚えています.  
実行してみます.
外の電話を見てください.