Есть ли на Android способ перехватить входящие звонки / SMS, чтобы заблокировать / разблокировать его? - PullRequest
3 голосов
/ 09 марта 2010

Есть ли способ перехватить входящие звонки / SMS (заблокировать или разблокировать его) на основе номеров мобильных телефонов, добавленных в список проверки?

Ответы [ 3 ]

7 голосов
/ 11 марта 2011

----> По вашему вопросу, думаю, будет полезно следующее.

package android_programmers_guide.PhoneCallReceiver;
import java.lang.reflect.Method;
import com.android.internal.telephony.ITelephony;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;
public class PhoneCallReceiver extends BroadcastReceiver
{
    Context context = null;
    private static final String TAG = "THIRI THE WUT YEE";
    private ITelephony telephonyService;
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        Log.v(TAG, "Receving....");
        TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);  
        try 
        {
            Class c = Class.forName(telephony.getClass().getName());
            Method m = c.getDeclaredMethod("getITelephony");
            m.setAccessible(true);
            telephonyService = (ITelephony) m.invoke(telephony);

            Toast tag = Toast.makeText(context, "Call is not allowed in the meeting!!!", Toast.LENGTH_LONG);
            tag.setDuration(25);
            tag.show();


            telephonyService.silenceRinger();
            telephonyService.endCall();
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }

 }


}

-----> Вот класс интерфейса

package com.android.internal.telephony;
interface ITelephony 
{
    boolean endCall();
    void answerRingingCall();
    void silenceRinger();
}

----> А Манифест выглядит следующим образом

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".PhoneCall2"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>
        <receiver  android:name=".PhoneCallReceiver">
            <intent-filter  android:priority="100" >
                <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter>
        </receiver>


    </application>
    <uses-sdk android:minSdkVersion="3" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

</manifest> 

---> Честно говоря, я нашел этот код в интернете Ура!

5 голосов
/ 09 марта 2010

Насколько я знаю, приложение для приема звонков не может быть изменено. Тем не менее, см. Как заблокировать вызовы в Android для некоторых творческих предложений.

Кажется, есть обходной путь для удаления SMS см. Как программно удалить SMS из папки «Входящие» в Android? .

Но для приложения это весьма сомнительно, поскольку побочные эффекты могут быть серьезными. Убедитесь, что ваши пользователи понимают это! Лучшее решение IMHO будет иметь отдельную сборку Android, которая поддерживает эти функции безопасности детей (я полагаю, это то, для чего вы хотите его использовать).

0 голосов
/ 22 сентября 2012

Что ж, если вы ищете приложение, на рынке Android есть множество приложений для блокировки вызовов. Я бы порекомендовал следующее бесплатное приложение, которое делает это и многое другое: https://play.google.com/store/apps/details?id=cloud4apps.cBlocker

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...