W mojej aplikacji utrzymam listę kontaktów.Jak odrzucić połączenie programowo w Androidzie
Wszelkie połączenia od kontaktów z listy zostaną usunięte. Będą wyświetlane pod nieodebranymi połączeniami, ale telefon nie zadzwoni.
W mojej aplikacji utrzymam listę kontaktów.Jak odrzucić połączenie programowo w Androidzie
Wszelkie połączenia od kontaktów z listy zostaną usunięte. Będą wyświetlane pod nieodebranymi połączeniami, ale telefon nie zadzwoni.
pierwsze stworzenia tego interfejsu:
public interface ITelephony {
boolean endCall();
void answerRingingCall();
void silenceRinger();
}
następnie utworzyć tej klasy, która rozciąga BroadcastReceiver
public class IncomingCallReceiver extends BroadcastReceiver {
private ITelephony telephonyService;
private String blacklistednumber = "+458664455";
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
ITelephony telephonyService = (ITelephony) m.invoke(tm);
Bundle bundle = intent.getExtras();
String phoneNumber = bundle.getString("incoming_number");
Log.e("INCOMING", phoneNumber);
if ((phoneNumber != null) && phoneNumber.equals(blacklistednumber)) {
telephonyService.silenceRinger();
telephonyService.endCall();
Log.e("HANG UP", phoneNumber);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Spowoduje to zablokowanie tylko tej jednej phonenumber, ale masz rację.
W swoim oczywistym dodać to:
<receiver android:name=".IncomingCallReceiver">
<intent-filter android:priority="999">
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />
. Ale stało się coś ciekawego. Jak stworzyć ten interfejs, co mam na myśli normalny interfejs lub plik pomocy – harish
wystarczy utworzyć normalny intercafe. Ale może być konieczne umieszczenie go w pakiecie o nazwie: com.android.internal.telephony spróbuj tego. –
nawet jeśli nie działa, myślę, że musimy wygenerować plik pomocy. Ale nie wiem, jak to zrobić. – harish
Ściągnij klasę ITelephony z here.
następnie umieścić go w opakowaniu (marka nowy pakiet) z com.android.internal.telephony.
następnie zaimportować pakiet do odpowiedniej klasy i odrzucanie połączenia użyć metody endCall()
ContentObserver jest słowo gdzie najlepiej praktyka –
możliwe duplikat [Jak blokować połączenia w Androidzie] (http://stackoverflow.com/questions/1083527/how-to-block-calls-in-android) –
'MODIFY_PHONE_STATE' [uprawnienie dotyczy tylko aplikacji systemowych] (http://stackoverflow.com/questions/4715250/how-to-grant-modify-phone-state-permission-for-apps-ran-on-pingerbread) (dla Androida 2.3 i nowszych). Jeśli chcesz używać aplikacji tylko dla telefonu, do którego masz dostęp, możesz [utworzyć aplikację systemową aplikacji] (http://projectmaxs.org/documentation/systemapp.html) – tchelidze