2014-03-07 29 views
0

我對android很陌生。我開發了一個應用程序Text Off.Text Off應用程序阻止了不需要的調用和文本。它可以順利工作於4.2或更低版本,但它的文本塊功能不適用於kitkat 4.4版本,並且在調用後斷開連接一個戒指。我完全是黑人,我是什麼。我正在使用以下代碼。如何以動態方式設置意向過濾器的最高優先級?

這是服務頁面代碼ServiceReciever.java

package com.rsoft.callListener; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.telephony.PhoneStateListener; 
import android.telephony.TelephonyManager; 

public class ServiceReciever extends BroadcastReceiver 
{ 

    private static TelephonyManager telephony; 
    private static DeviceStateListener phoneListener; 
    private static boolean firstTime=true; 

    public ServiceReciever(Context context) 
    { 
     telephony=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
     phoneListener=new DeviceStateListener(context); 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     if(firstTime) 
     { 
      telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE); 
      firstTime=false; 
     } 
    } 

    public void stopListening() 
    { 
     telephony.listen(phoneListener, PhoneStateListener.LISTEN_NONE); 
     firstTime=true; 
    } 

} 

此頁爲SMS接收機

public void onReceive(Context context, Intent intent) 
    { 
     this.context=context; 
     blockSms(intent); 
    } 

    public void blockSms(Intent intent) 
    { 
     String MSG_TYPE=intent.getAction(); 
     final String android_id = Secure.getString(context.getApplicationContext() 
       .getContentResolver(), Secure.ANDROID_ID); 
     // Toast toast = Toast.makeText(context,"SMS Received: "+MSG_TYPE , Toast.LENGTH_LONG); 
     //toast.show(); 

     Bundle bundle = intent.getExtras(); 
     Object messages[] = (Object[]) bundle.get("pdus"); 
     final SmsMessage smsMessage[] = new SmsMessage[messages.length]; 
     for (int n = 0; n < messages.length; n++) 
     { 
      smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); 
     } 

      //final BlockedContact cn=CallBlockerService.blackList.get(smsMessage[0].getOriginatingAddress()); 
      //final BlockedContact cn=CallBlockerService.blackList.get(android_id); 
      //if(cn!=null && cn.getName().equals("1")||cn!=null && cn.getName().equals("3")) 
      final String Status=TextOffService.deviceStatus; 
      if(Status!=null && Status.equals("1")||Status!=null && Status.equals("3")|| Status != null 
        && Status.equals("5")) 
      { 
       abortBroadcast(); 
       //final String android_id = Secure.getString(context.getApplicationContext() 
         //.getContentResolver(), Secure.ANDROID_ID); 
       Thread t=new Thread(new Runnable() 
       { 

        @Override 
        public void run() 
        { 
         DateFormat dateFormat=new SimpleDateFormat("yyyy/MM/dd - HH:mm:ss"); 
         Date date=new Date(); 
         String currentDate=dateFormat.format(date); 

         //LOG FORMAT --> TITLE;;MESSAGE;;NAME;;NUMBER;;HOUR;;BODYMESSAGE;;SEPARATOR 
         String message="Text Blocked;;A message from "+smsMessage[0].getOriginatingAddress().replace("+", "")+" was blocked at "+currentDate+";;"+smsMessage[0].getOriginatingAddress().replace("+", "")+";;"+currentDate+";;"+smsMessage[0].getMessageBody().replace("\n", "")+";;\r\n"; 
         sendSmsByManager(smsMessage[0].getOriginatingAddress().toString(),"I can't reply to your text at this time Driving "); 
         writeInLog(message); 
         // Building Parameters 
         List<NameValuePair> params = new ArrayList<NameValuePair>(); 
         params.add(new BasicNameValuePair("DeviceUniqueID",android_id)); 
         params.add(new BasicNameValuePair("MyLog", message)); 
         params.add(new BasicNameValuePair("ContactNo", smsMessage[0].getOriginatingAddress().replace("+", ""))); 
         params.add(new BasicNameValuePair("Created_Date", currentDate)); 
         // getting JSON string from URL 
         JSONObject json = jsonParser.makeHttpRequest(
           url_create_product, "POST", params); 

         // check log cat for response 
         Log.d("Create SMS log", json.toString()); 
        } 
       }); 

       t.start(); 
      } 

現在這個頁寄存器接收機CallBlockerService.java

service = new ServiceReciever(getApplicationContext()); 
sms = new SmsReceiver(); 
     registerReceiver(service, new IntentFilter(
       "android.intent.action.PHONE_STATE")); 
     registerReceiver(service, new IntentFilter(
       "android.intent.action.NEW_OUTGOING_CALL")); 
     IntentFilter intentSMS = new IntentFilter(
       "android.provider.Telephony.SMS_RECEIVED"); 
     intentSMS.setPriority(2147483647); 
     registerReceiver(sms, intentSMS); 

請幫助我如何限制來電和文本

+0

您能否提供更多詳細信息或明確顯示哪些不起作用? – hrbrmstr

回答

0

的Android的最新版本,您可以阻止來電的是Android 2.2

在Android 2.3及隨後你就無法管理來電。

對於阻止呼叫,您應該將聯繫人的語音信箱選項設置爲「1」,並提供不存在的語音信箱號碼。