Android簡易實戰教程--第二十話《通過廣播接收者,對撥打到電話外加ip號》

來源:互聯網
上載者:User

標籤:

沒睡著覺,起來更篇文章吧哈哈!首先祝賀李宗偉擊敗我丹,雖然我是支援我丹的,但是他也不容易哈哈,值得尊敬的人!切入正題:這一篇來介紹個自訂廣播接收者。

通常我們在撥出電話的時候,一般為使用網路電話。如果電話號碼是某種類型的電話,會自動在前面加上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 {//接收到廣播時就會調用@Overridepublic 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();    }    }

記得有一個許可權要加入:   <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>

運行看看效果:


再看撥出電話:


Android簡易實戰教程--第二十話《通過廣播接收者,對撥打到電話外加ip號》

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.