Android第二個小練習:撥號提醒

來源:互聯網
上載者:User

             使用觸屏手機的人都有過這樣的一種錯誤:在撥號的時候觸錯了人,一步小心就呼叫出去了,這個時候手忙腳亂的去掛斷。那麼針對上面的情景設計,我做了這麼一個小的練習,就是說當要撥打到電話的時候,首先彈出一個對話方塊,確認要撥打給電話XXX,點確認以後呼叫,點取消以後取消呼叫。

            先:

 

因為是一次自學聯絡,所以功能上並不複雜,但是個人有發現有這樣的app在市面上流通,所以做一個對別人有用的練習,還是很有成就感的。下面提出主要的代碼

package abortCall.test;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.SharedPreferences;import android.content.DialogInterface.OnClickListener;import android.content.Intent;import android.net.Uri;import android.os.Bundle;public class AbortCallActivity extends Activity {    /** Called when the activity is first created. */String nums ="";    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        try{        Bundle bundle = this.getIntent().getExtras();        nums = bundle.getString("num");        ShowDialog();        }catch(Exception ex){        }    }    private void ShowDialog(){AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setMessage("您確定要撥號給"+nums+"嗎?");builder.setTitle("提醒");builder.setPositiveButton("確定", new OnClickListener(){public void onClick(DialogInterface dialog,int which){SharedPreferences settings = getSharedPreferences("SETTING_INFO",0);settings.edit().putBoolean("IsAllowed", true).commit();Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+nums)); startActivity(intent);Finish();}});builder.setNegativeButton("取消", new OnClickListener(){public void onClick(DialogInterface dialog,int which){Finish();}});builder.create().show();}    private void Finish(){    this.finish();    System.exit(0);    }}

 

package abortCall.test;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;public class callReceiver extends BroadcastReceiver {private Context context;@Overridepublic void onReceive(Context context, Intent intent){String action = intent.getAction();String PhoneNum = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);this.context = context;SharedPreferences settings = context.getSharedPreferences("SETTING_INFO",0);boolean IsAllowed = settings.getBoolean("IsAllowed",false);if(!IsAllowed){setResultData(null);intent.setClass(context, AbortCallActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.putExtra("num", PhoneNum);context.startActivity(intent);}settings.edit().putBoolean("IsAllowed", false).commit();this.clearAbortBroadcast();}public void Allowed(){}}
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="abortCall.test"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="8" />    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>    <uses-permission android:name="android.permission.CALL_PHONE"/><application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <activity            android:name=".AbortCallActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <receiver android:name="callReceiver">            <intent-filter android:priority="-1" >                <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>            </intent-filter>        </receiver>    </application></manifest>

主要的思路:在手機撥號的時候獲得android.permission.PROCESS_OUTGOING_CALLS 的Broadcast事件,然後對阻斷撥號,並且跳轉到Activity.由Activity彈出對話方塊。經過對話方塊確認以後,再次撥號。因為再次撥號依然會被阻斷,所以想可以傳遞一個參數給Receiver告訴它這次撥號是經過許可的。就不會阻斷,因為無法直接傳遞參數,所以使用了一個SharedPreferences來儲存傳遞值。從而避免再次被阻斷。

通過本次聯絡主要掌握的知識點:

1、如何註冊和使用一個BroadCastReceiver.

2、BroadCastReceiver如何啟用一個Activity:要點是intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

3、BroadcastReceiver無法直接啟動一個Dialog

4、如何使用一個Dialog

5、如何在系統無法支援明確傳遞參數的情況下去傳遞一個參數,使用SharedPreferres去傳遞參數,做到靈活應用和變通。

6、如何阻斷撥號和播出去一個號碼。

7、由使用簡單頁面跳轉到了使用一些比較系統的介面,感覺到可以控制機器了。

附上原始碼 http://download.csdn.net/detail/aofengdaxia/4058274

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.