標籤:
IP撥號器,使用了Android的廣播接收者(BroadCastReceiver),在廣播中把已儲存的ip號碼放在撥打到電話號碼的前面(getResultData()),然後把修改後的號碼設定到廣播中(setResultData())。
項目建立步驟和思路:
1.建立一個java類,繼承android的BroadCastReceiver
2.在資訊清單檔中,定義receiver節點,定義name屬性,指定廣播接收者java類的全類名
3.在intent-filter的節點中,指定action子節點,action的值必須跟要接受的廣播中的action匹配
4.重寫自訂的廣播接收者的onReceive()方法,當撥打到電話的廣播時,把ip號碼放在撥打到電話的號碼前
其中使用SharedPreferences儲存ip號碼
擷取到廣播中的資料使用方法:getResultData()
把修改後的資料放入廣播方法:setResultData(ipNumber+number);
MainActivity代碼:
1 import android.app.Activity; 2 import android.content.SharedPreferences; 3 import android.os.Bundle; 4 import android.view.View; 5 import android.widget.EditText; 6 7 public class MainActivity extends Activity { 8 9 @Override10 protected void onCreate(Bundle savedInstanceState) {11 super.onCreate(savedInstanceState);12 setContentView(R.layout.activity_main);13 }14 15 public void click(View v){16 EditText et=(EditText) findViewById(R.id.et);17 18 SharedPreferences sharedPreferences = getSharedPreferences("ip", MODE_PRIVATE);19 sharedPreferences.edit().putString("ipNumber", et.getText().toString()).commit();20 }21 22 }
CallReceiver代碼:
1 import android.content.BroadcastReceiver; 2 import android.content.Context; 3 import android.content.Intent; 4 import android.content.SharedPreferences; 5 6 public class CallReceiver extends BroadcastReceiver { 7 8 @Override 9 public void onReceive(Context context, Intent intent) {10 String number = getResultData();11 SharedPreferences sharedPreferences = context.getSharedPreferences(12 "ip", Context.MODE_PRIVATE);13 String ipNumber = sharedPreferences.getString("ipNumber", "");14 System.out.println(ipNumber+"+"+number);15 setResultData(ipNumber+number);16 17 }18 19 }
資訊清單檔代碼:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.lijingbo.ipdialer" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="14" 9 android:targetSdkVersion="21" />10 11 <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />12 13 <application14 android:allowBackup="true"15 android:icon="@drawable/ic_launcher"16 android:label="@string/app_name"17 android:theme="@style/AppTheme" >18 <activity19 android:name=".MainActivity"20 android:label="@string/app_name" >21 <intent-filter>22 <action android:name="android.intent.action.MAIN" />23 24 <category android:name="android.intent.category.LAUNCHER" />25 </intent-filter>26 </activity>27 28 <receiver android:name=".CallReceiver" >29 <intent-filter>30 <action android:name="android.intent.action.NEW_OUTGOING_CALL" />31 </intent-filter>32 </receiver>33 </application>34 35 </manifest>
Android開發之IP撥號器原理