Sto cercando di redirigere le chiamate usando il codice mmi *21*telNum# programmaticamente nel codice
Ecco il mio ultimo tentativo
Questo codice reindirizza verso MainActivity (come me l'aspetto) ma quando provo a controllare con *#21# risulta il reindirizzamento non settatocodice:import android.Manifest import android.content.Intent import android.content.pm.PackageManager import android.net.Uri import android.os.Bundle import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.net.toUri import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R class ConfirmRedirectionActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_confirm_redirection) ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } findViewById<android.widget.Button>(R.id.button).setOnClickListener { setupForwarding() } } fun setupForwarding() { if (ActivityCompat.checkSelfPermission( this, Manifest.permission.CALL_PHONE ) != PackageManager.PERMISSION_GRANTED ) { ActivityCompat.requestPermissions( this, arrayOf(Manifest.permission.CALL_PHONE), CALL_PHONE_PERMISSION_REQUEST_CODE ) return } fun telCall(telNum: String) = startActivity( Intent(Intent.ACTION_CALL).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK data = Uri.fromParts("tel", telNum, null) Log.i("About to call $data") } ) telCall("##002#") Log.i("Cleared call forwarding") telCall("*21*${intent.getStringExtra("telIn") ?: ""}#") Log.i("Call forwarding enabled") corePreferences.firstStart = false startActivity(Intent(this, MainActivity::class.java)) // Go to dialer view finish() } override fun onRequestPermissionsResult( requestCode: Int, permissions: Array<out String>, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) if (requestCode == CALL_PHONE_PERMISSION_REQUEST_CODE) { if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { setupForwarding() } else { // TODO: Handle permission denied } } } companion object { private const val CALL_PHONE_PERMISSION_REQUEST_CODE = 100 } }
Ho anche provato con TelecomService.placeCall (fa solo chiamate, non gestisce codici mmi) e TelecomService.handleMmi ( richiede di essere l'app dialer di sistema)

LinkBack URL
About LinkBacks
Rispondi quotando