残高を確認するには、最初に電話をかける必要があります* xxx#次に、複数のオプションから選択できる応答を受け取り、特定の番号を入力した後、残高を取得します。
Androidアプリで同じコードを使用できますか?
* xxx * x#をダイヤルすると、エラーが発生します。
以下は、* xxx#呼び出しで正常に機能する私のコードです。
String encodedHash = Uri.encode("#");
String ussd = "*" + encodedHash + lCallNum + encodedHash;
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussd)));
これは私のために働きます:
private Uri ussdToCallableUri(String ussd) {
String uriString = "";
if(!ussd.startsWith("tel:"))
uriString += "tel:";
for(char c : ussd.toCharArray()) {
if(c == '#')
uriString += Uri.encode("#");
else
uriString += c;
}
return Uri.parse(uriString);
}
次に、作業コードで:
Intent callIntent = new Intent(Intent.ACTION_CALL, ussdToCallableUri(yourUSSDCodeHere));
startActivity(callIntent);
スカイプの問題を解決する許可を追加することを忘れないでください:P
<uses-permission Android:name="Android.permission.CALL_PHONE"></uses-permission>
String ussd = "*XXX*X" + Uri.encode("#");
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussd)));
これは私と完璧に連携します。最初の束をそのまま配置し、#
をエンコードして、完全な*XXX*X#
にします。これは間違いなく役に立ちます
覚えておくべき重要なこと:
ターゲットにしている場合Android Marshmallow(6.0)以上の場合は、実行時にManifest.permission.CALL_PHONE権限をリクエストする必要があります
これを試してください、私はそれをテストしませんでしたが、動作するはずです。
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + Uri.encode("*3282#")));
startActivity(intent);
このコードを使用すると機能します
Intent callIntent = new Intent(Intent.ACTION_CALL);
String ussdCode = "*" + 2 + Uri.encode("#");
callIntent.setData(Uri.parse("tel:" +ussdCode));
if (ActivityCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
return;
}
startActivity(callIntent);
この行もマニフェストファイルに追加します
<uses-permission Android:name="Android.permission.CALL_PHONE" />
このコードを使用できます。わたしにはできる:
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(Uri.parse("tel:" + "*947") + Uri.encode("#")));
startActivity(intent);