Πώς υλοποιείται η πραγματοποίηση εισερχόμενων και εξερχόμενων κλήσεων στην πλατφόρμα Android;
sobes.tech AI
Απάντηση από AI
Στο Android, οι εισερχόμενες και εξερχόμενες κλήσεις διαχειρίζονται μέσω των προεπιλεγμένων API της πλατφόρμας.
Εξερχόμενες κλήσεις:
Για να πραγματοποιήσετε μια εξερχόμενη κλήση, μπορείτε να χρησιμοποιήσετε ένα Intent με την ενέργεια Intent.ACTION_CALL ή Intent.ACTION_DIAL.
- Το
ACTION_DIALανοίγει την εφαρμογή τηλεφώνου με τον αριθμό, αλλά δεν πραγματοποιεί αυτόματα την κλήση. - Το
ACTION_CALLξεκινά άμεσα την κλήση, αλλά απαιτεί την άδειαCALL_PHONE.
Παράδειγμα κώδικα για εξερχόμενη κλήση:
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:+1234567890"));
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
context.startActivity(callIntent);
} else {
// Ζητήστε άδεια από τον χρήστη
}
Εισερχόμενες κλήσεις:
Για να διαχειριστείτε τις εισερχόμενες κλήσεις, πρέπει να χρησιμοποιήσετε το TelephonyManager και το PhoneStateListener ή το BroadcastReceiver για να ακούσετε την κατάσταση της κλήσης.
Παράδειγμα με PhoneStateListener:
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener callStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String phoneNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
// Εισερχόμενη κλήση
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
// Η κλήση είναι ενεργή
break;
case TelephonyManager.CALL_STATE_IDLE:
// Η κλήση τερματίστηκε ή δεν υπάρχει κλήση
break;
}
}
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);
Για πλήρη λειτουργικότητα με τις κλήσεις, ενδέχεται να χρειαστούν πρόσθετα δικαιώματα, όπως το READ_PHONE_STATE.
Είναι σημαντικό να σημειωθεί ότι από το Android 6.0 (API 23) και μετά, πρέπει να ζητάτε τα δικαιώματα από τον χρήστη κατά την εκτέλεση.