2012-01-28 15 views
0

こんにちは、私はすべてを通話転送コードの一部の文字を解析するのを除いて作業しているSMS経由で転送/アクティブコールを自動化するアプリケーションを作ってるんだ...Uriメソッドで特殊文字をダイヤルする方法は?

これはここに文書化されたコール転送のコードを実行するために私のコードです:http://en.wikipedia.org/wiki/Call_forwarding#Keypad_codes

Intent callIntent = new Intent(Intent.ACTION_CALL); 
       callIntent.setData(Uri.parse("tel:"+Uri.encode("#")+Uri.encode("#")+"21"+Uri.encode("#"))); 
       ((Intent)callIntent).addFlags(268435456); 
       this.context.startActivity((Intent)callIntent); 

コールをキャンセルするためのコードは## 21#ですが、私のアプリケーションは、常にエラーを持って、上に掲載され、それは私の命令を読み取ることができないように見えますが、私はそれを手動でダイヤルする場合、それは結構です。..

+0

をしているのですか? callIntent.setData(Uri.parse( "tel:268435456"));を使用しないでください。 – JustinDanielson

+0

@ JustinDanielsonは、無条件のコール転送のキーパッドコードです。この行がある [Call_forwarding#Keypad_codes](http://en.wikipedia.org/wiki/Call_forwarding#Keypad_codes) : ## 21#は、あなたがそれを をキャンセルしたい場合、私はここにことがわかっダイヤルするためのコードです(電話番号:268435456 ")); しかし、私が"# "を使用した場合、電話は機能しません。エラーコードが表示されます。 すべての通話を転送する場合は、 ** 21 * <電話番号はここ># となり、その番号への通話転送をキャンセルする場合は、このコードをダイヤルするだけです。 ## 21# それは私がやろうとしていることです。 – mboy

答えて

1

* 21 *のACTION_CALLではなくACTION_DIALを使用してみてください。 #21#。
linkもチェックしてください。あなたの問題を具体的に解決すると思います。ここで

はTLDRいます:## 21#は何を

String uri = "**21*268435456#"; // ##21#268435456# 
Intent intent = new Intent(Intent.ACTION_DIAL); // ACTION_CALL 
Uri uri2 = Uri.fromParts("tel", uri, "#"); 
intent.setData(uri2); 
startActivity(intent); 
+0

wow..awesome!私はこれを試し、あなたに知らせるでしょう! ..ありがとうございます – mboy

+0

コールキー/グリーンキーの押下を自動化する方法はありますか?指定された番号だけをダイヤルし、コールを開始しないためです。 – mboy

+0

ACTION_CALLはコールを自動化し、ACTION_DIALはダイヤルします。あなたはACTION_CALLを電話番号で試してみることもできますし、通話中は## 21#でACTION_DIALを実行してください。あなたは####を実際に呼び出すことはありません。電話番号がその番号に有効である間にダイヤルすると思います。私は完全にはわからない。それが動作する場合は、私に教えてください。 フラグメントフィールドに21を入れてみましたか?電話:phonenumber#21 ACTION_CALLまたはACTION_DIALのためにそれを使用してください – JustinDanielson