2013-05-30 2 views
1

Привет, ребята я пытаюсь отправить две переменные из андроида сервиса вещательного приемника, и мне нужна помощь здесь ..передавая переменную от службы в широковещательный приемник

Я настраиваю два вар-х в OnCreate метод класса обслуживания здесь ..

@Override 
public void onCreate() { 

    super.onCreate(); 


    Intent eSendIntent = new Intent(getApplicationContext(), OutgoingCallReceiver.class); 

    eSendIntent.putStringArrayListExtra("BlockArray", contactsListB); 
    eSendIntent.putExtra("BlockBool", checkB); 
    getApplicationContext().sendOrderedBroadcast(eSendIntent, null);//Call receiver 



} 

и в моем классе приемника ...

onReceive(Context context, Intent intent){ 
Bundle bundle = intent.getExtras(); 

      if(bundle == null) 
        return; 


      boolean cb = bundle.getBooleanExtra("BlockBool", true); 
      ArrayList<String> ab = bundle.getStringArrayListExtra("BlockArray"); 


//disconnecting 
      try{ 

       if(cb==false){ 
       for(int ij = 0; ij < ab.size(); ij++){ 
        if(ab.get(ij).contains(phonenumber)){ 

         tempBoolean = true; 
         //Log.e("OutgoingCallReceiver", SmsBlockerService.contactsListB.get(ij)); 
        } 
       }//for loop 
        if(tempBoolean==true){ 

       setResultData(null); 
         Toast.makeText(context, phonenumber + " is Blocked", Toast.LENGTH_SHORT).show(); 
        } 

      }else{ 
       setResultData(null); 

       Toast.makeText(context, "All Out-Going Calls are Blocked", Toast.LENGTH_SHORT).show(); 
      }//end of main if 

        } catch(Exception e){ 
         Toast.makeText(context, "Detect Calls sample application Failed: ", Toast.LENGTH_LONG).show(); 
      } 
} 

LogCat:

E/BroadcastReceiver (1459): BroadcastReceiver пытается вернуть результат во время неупорядоченным вещать

+1

И что происходит дальше? – Egor

+1

Ваш вопрос не является полным – Mahesh

+0

Я не получаю никаких значений –

ответ

0

Предполагая, что вы зарегистрировали receiver.Now попытаться сделать небольшое изменение:

 boolean cb = bundle.getBooleanExtra("BlockBool", true); 
     ArrayList<String> ab = bundle.getStringArrayListExtra("BlockArray"); 

Обновление:

В по созданию ... называйте вещания как ...

sendOrderedBroadcast(eSendIntent); 

Вы столкнулись с этой ошибкой, потому что, setResultDat Функция a() работает только с OrderedBroadcast.

С Android Документации:

public final void setResultCode (int code) 

    Added in API level 1 
    Change the current result code of this broadcast; only works with broadcasts sent 
    through Context.sendOrderedBroadcast. Often uses the Activity RESULT_CANCELED and 
    RESULT_OK constants, though the actual meaning of this value is ultimately up to the 
    broadcaster. 

    This method does not work with non-ordered broadcasts such as those sent with 
    Context.sendBroadcast. 
+0

спасибо, будет работать на этом –

+0

Если это сработает ..не забудьте проголосовать или отметьте ответ @ Ajax-theMax :) – amalBit

+0

не работает ... :-( –

0

для радиовещательного приемника работать активность/экран, на котором написано должен быть до & бегов. так что получатель может принять принятое намерение &, это значение.

+0

Также проверьте, зарегистрирован ли ваш ресивер в файле AndroidManifest.xml или в действии, в котором вы используете приемник. – ABC

1

набор это в широковещательного намерения

  i.setAction("MYACTION"); 

, чем установить это в манифесте

<receiver android:name=".BroadcastClass" > 
     <intent-filter> 
      <action android:name="MYACTION" /> 
     </intent-filter> 
    </receiver> 

может быть полезным это должно

+0

применил ваше предложение, но не работало, я больше не могу сделать –

+1

, сначала проверив, отправив простую строку или сообщение, если это вызовет вашу трансляцию, чем ошибка, где – anddevmanu

+0

да проверит ее, и проблема кроется в другом месте. Спасибо –

Смежные вопросы