ウェブアプリケーション,インジェクション,コマンドインジェクション

Androidアプリ開発 電話機能偏

発信をブロック

Blocking OutGoing Calls

もし親として必要なコントロールをするアプリケーションを
書いているとしたら、
一定の番号からの電話からユーザを守り、そのような電話は
ブロックしたいと思うかもしれません。
例えば、出会い系サイトやオンラインクイズ、ゲームを
提供しているサービスプロバイダからの割増料金がかかるような電話など、
特定の番号からの電話を子供にして欲しくない場合があるかもしれません。
ここでは、特定の電話をかけさせないようにする方法を示します。
発信するのををブロックするためには、
BroadcastReceiverクラスを作り、onReceive()メソッドを再定義します。
発信したときに、onReceive()メソッドが呼び出されます。
発信するのを防ぐためには、setResultData()メソッドを単純に
呼び出しsetResultData()メソッドにnull引数を渡す必要があります。
この操作で発信する操作ができなくなります。
もちろん、一定の番号のみブロックしたいかもしれませんし、
このメソッドを拡大して、ユーザが発信しようとした電話番号を
検索できたりもします。このメソッドを使うことで、
ブロックする発信番号を選択できるようになります。
BroadcastReceiverクラスを以下のコード部で示します。

package ner.learn2develop.blockoutgoingcall;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class OutgoingCallsReceiver extends BroadcastReceiver{

  @Override
  public void onReceive(Context context, Intent intent){
   String outgoingNumber =
    intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER).toString();
   if (outgoingNumber.contentEquals("123456")){
    setResultData(null);
    Toast.makeText(context, "This call is not allowed",
         Toast.LENGTH_SHORT).show();
    }
   }
  }

発信が作られたときにBroadcastReceiverを使えないようにするために、
AndroidManifest.xmlファイルにあるreceiverの宣言と同じように
PROCESS_OUTGOING_CALLSパーミッションを加える必要があります。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="net.learn2develop.blockoutgoingcall"
  android:versionCode="1"
  android:versionName="1.0" >

  <uses-sdk
   android:minSdkVersion="8"
   android:targetSdkVersion="15" />

   <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS />

   <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

   <activity
    android:name=".MainActivity"
    android:label="@string/title_activity_main" >
    <intent-filter>
     <action android:name="android.intent.action.MAIN" />

     <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
   /activity>

   <receiver android:name=".OutgoingCallsReceiver" >
    <intent-filter android:priority="0" >
     action android:name="android.intent.action.NEW_OUTGOING_CALL" />
    </intent-filter>
   <receiver>
  /application>

</manifest>

もし、ユーザがBroadcastReceiverクラスにある電話番号に
発信しようとしても、発信が成功することはありません。

ホーム
便利堂ロゴ
inserted by FC2 system