Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android BroadcastReceiver在非顺序广播错误期间尝试返回结果_Android_Eclipse_Broadcastreceiver - Fatal编程技术网

Android BroadcastReceiver在非顺序广播错误期间尝试返回结果

Android BroadcastReceiver在非顺序广播错误期间尝试返回结果,android,eclipse,broadcastreceiver,Android,Eclipse,Broadcastreceiver,我有两个广播接收器。一个用于短信,一个用于通话。 我直面这个错误。我看到这一页: 但我不知道该如何使用这个建议。 Context.sendOrderedBroadcast。 这是否有用。我有其他接收器在这个软件包短信这个接收器工作良好。但是这个不行 public class PhoneCallReceiver extends BroadcastReceiver { Context context = null; SharedPreferences preferences = null ;

我有两个广播接收器。一个用于短信,一个用于通话。 我直面这个错误。我看到这一页:

但我不知道该如何使用这个建议。 Context.sendOrderedBroadcast。 这是否有用。我有其他接收器在这个软件包短信这个接收器工作良好。但是这个不行

public class PhoneCallReceiver extends BroadcastReceiver {
 Context context = null;
 SharedPreferences preferences = null ;
    Boolean  blacklist;
    Boolean  contact;
    Boolean  all;



 public void onReceive(Context context, Intent intent) {


     preferences = context.getSharedPreferences("modes",Context.MODE_PRIVATE);

     if (intent.getAction().equals("android.intent.action.PHONE_STATE")) { 

           String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);





if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
String phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);

          if (preferences.getBoolean("all", true)){ 
                     Log.i("all", ":  " + phoneNumber);
                     abortBroadcast();

                     Log.i("block: ", phoneNumber);

          }

           else      if (preferences.getBoolean("blacklist", true)){
                     boolean str=Search.search(phoneNumber);
                     if (phoneNumber != null && str ==true) {
                     abortBroadcast();}}




           else     if (preferences.getBoolean("c", true)&&getDetails(phoneNumber)){
                     abortBroadcast();}





           else     if (preferences.getBoolean("g", true)){
                    boolean str=SearchInWhiteList.search(phoneNumber);
                    if (phoneNumber != null && str ==true) {
                    abortBroadcast();}}




            else      if (preferences.getBoolean("b", true)){
                         abortBroadcast();}





            else {}
            }

        }

 } 
显示

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="blocker.activity"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> 

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>

  <uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity

        android:name=".FirstPage"
        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=".SmsFilter" android:enabled="true">
<intent-filter android:priority="999">


    <action android:name="android.intent.action.PHONE_STATE" />
    <action android:name="bloker.activity.android.action.broadcast"/> 
    <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
</intent-filter>
</receiver>

<receiver android:name=".PhoneCallReceiver" android:enabled="true">
<intent-filter android:priority="999">


    <action android:name="android.intent.action.PHONE_STATE" />
    <action android:name="bloker.activity.android.action.broadcast"/> 
 </intent-filter>
</receiver>

    <activity

        android:name=".Search"
        android:label="@string/app_name" >

    </activity>

    <activity

        android:name=".BlockActivity"
        android:label="@string/app_name" >

    </activity>


    <activity
        android:name=".SmsFilter"
        android:label="@string/app_name" >

    </activity>


    <activity
        android:name=".CustomAdapter"
        android:label="@string/app_name" >

    </activity>


    <activity
        android:name=".Setting"
        android:label="@string/app_name" >

    </activity>

    <activity
        android:name=".GetAllContact"
        android:label="@string/app_name" >

    </activity>

     <activity
        android:name=".WhiteList"
        android:label="@string/app_name" >

    </activity>
</application>

</manifest>
编辑: android手机来电的广播接收器未订购。因此,不能使用上述代码中止。我的问题是,我们如何处理这种广播? 我知道使用此代码可以阻止调用。
但我的问题是,如何使用上述代码中止呼叫?

您不能中止广播或以编程方式挂断呼叫。电话控制只能通过电话应用程序完成。您注册接收的广播仅提供信息:它们告诉您状态更改,但它们不是触发状态更改或驱动电话状态机的内容


您可以使用带有action\u NEW\u outgoing\u CALL操作的有序广播来拦截/修改传出呼叫,但没有公共方式来拦截传入呼叫。

您看到的问题到底是什么?你说你看到了这个错误,但没有描述错误是什么。应用程序崩溃了吗?你有logcat输出吗?我有,而且内容仍然没有提供足够的细节,也没有回答我刚才问的问题。好的。请阅读编辑部分。我补充一些解释。