簡體   English   中英

Android Studio-在撥號盤中執行USSD代碼

[英]Android Studio - Execute USSD code in Dial Pad

我的代碼現在有問題,我不知道是否有人可以幫助我。 我需要在撥號盤中運行USSD代碼,並且正在使用以下代碼:

Intent i = new Intent(Intent.ACTION_DIAL);
i.setData(Uri.parse("tel:"+  Uri.encode("##873283#")));

startActivity(i);

這樣就可以打開撥號盤,並且什么也不做。 如果我手動插入,USSD代碼將正確運行。

當心此USSD代碼,無需調用按鈕即可執行。

您可以在我手動運行代碼的地方查看此視頻: 視頻1

從應用程序運行代碼(它將收到命令“ update”並執行我發布的代碼): 視頻2

我認為只有在有按鍵的情況下才執行代碼。 這是問題嗎? 有一種方法可以模擬嗎?

非常感謝

如果要在沒有用戶交互的情況下直接發起呼叫,則可以使用操作Intent.ACTION_CALL。 由於最新SDK的安全性,您最初必須要求一些權限:

private void dialNumber(final String phoneNumber) {
    //permission is automatically granted on sdk<23 upon installation
    if (Build.VERSION.SDK_INT >= 23) {
        //Check if you have permissions to execute a call (number or USSD)
        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
            Log.v("TAG","Permission is granted");
            startActivity(new Intent(ACTION_CALL, Uri.fromParts("tel", phoneNumber, null)));

        } else {
            //Request permissions if we don't have them
            Log.v("TAG","Permission is revoked");
            ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.CALL_PHONE}, 1);
            startActivity(new Intent(ACTION_CALL, Uri.fromParts("tel", phoneNumber, null)));
        }
    }
    else {
        Log.v("TAG","Permission is granted");
        startActivity(new Intent(ACTION_CALL, Uri.fromParts("tel", phoneNumber, null)));
    }

}

在您的AndroidManifest.xml中添加以下權限(在應用程序標記之前):

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

在需要使用該方法時調用該方法,並將電話號碼作為字符串傳遞:

dialNumber("##323232#");

要么

dialNumber(123456789.toString());

我現在 在這里 拍攝的視頻

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM