2012-04-19 13 views
3


ダイヤルパッドからコードを入力してAndroidアプリを起動するにはどうすればいいか知りたかったのですが、あなたのようにあなたの銀河からの #3214789650# の場合、angryGpsアプリケーションを起動します。
これを実装する方法は?ダイヤルパッドで起動できるアプリを作成する方法

ありがとうございました。

+0

これは決して試みませんでしたが、これは一部のブロードキャスト受信機を使用して行われると思います。 – noli

+0

add *上記の番号のあとに# –

+0

@awaisの後に、あなたは 'ACTION_NEW_OUTGOING_CALL'のBroadcastReceiverを試してみましたか? –

答えて

5

発信番号聞くためにthis.use放送受信機を試してください:あなたが探しているものを

たManifest.xml

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


<receiver android:name=".OutgoingCallReceiver"> 
<intent-filter> 
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/> 
</intent-filter> 
</receiver> 

OutgoingCallReceiver.java

public class OutgoingCallReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     Bundle bundle = intent.getExtras(); 
     if (null == bundle) 
      return; 
     // outgoingNumber=intent.getStringExtra(Intent.ACTION_NEW_OUTGOING_CALL); 
     String phoneNubmer = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     //START APPLICATION HERE 
    } 
} 
+1

素晴らしいですが、あなたの 'BroadcastReceiver'が呼ばれた後、ダイヤルパッドがこの"電話番号 "をダイヤルしようとするのを防ぐ方法がありますか? –

+1

@TonythePonyはいあなたの受信機でこれを呼び出す:setResultData(null); –

+0

素晴らしいですが、これは順序付けされたブロードキャストでのみ有効だと思います。 –

1

をされます連絡先アプリケーションの一部ですが、実装が同じである可能性は非常に高いですがすべてのメーカーのために私はこれについては分かりません。

新しいアクティビティを開始するインテントは、handleSecretCodeファイルSpecialCharSequenceMgrで渡されます。コードスニペットは、あなたがする必要がどのような

static boolean handleSecretCode(Context context, String input) { 

    // Secret codes are in the form *#*#<code>#*#* 

    int len = input.length(); 

    if (len > 8 && input.startsWith("*#*#") && input.endsWith("#*#*")) { 
     Intent intent = new Intent(Intents.SECRET_CODE_ACTION, 
       Uri.parse("android_secret_code://" + input.substring(4, len - 4))); 
     context.sendBroadcast(intent); 

ある意図アクションIntents.SECRET_CODE_ACTIONとURI android_secret_codeのための放送受信機に登録することです://「コード」、あなたが起動できる放送受信機でのあなたの申請。

また、いくつかのアプリケーションが既に実装されている様子を見ることができます。エミュレータで動作するコードの1つは*#*#4636#*#*です。

+0

ありがとうDinesh :)、私はあなたの実装後にお知らせします。 –

+0

例については、[ここ](http://source-android.frandroid.com/packages/apps/Settings/src/com/android/settings/TestingSettingsBroadcastReceiver.java)を参照してください。マニフェストファイル[here](http://source-android.frandroid.com/packages/apps/Settings/AndroidManifest.xml)。それがあなたを助けることを願ってください。 – dinesh