Позвоните BroadCast Reciever через активность - PullRequest
0 голосов
/ 07 августа 2011

Я новичок в разработке Android. Я пытаюсь из своей деятельности изобрести вещательный приемник.

public class MyReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"ABC", Toast.LENGTH_LONG).show();
        Bundle extras = intent.getExtras();
        String[] parameters= (String[])intent.getSerializableExtra("parameters");
    }
}

моя активность

public class MyActivity extends Activity {
    public static String BROADCAST_ACTION="com.kiosk.cbal.CALL_RECEIVER";

    /**
     * @see android.app.Activity#onCreate(Bundle)
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String parameters = "safdsam,fdsa,fdsa,fdsa,fdsa";
        String[] parameters =abc.split(",");
        Intent i = new Intent("com.package.MyReceiver");
        i.putExtra("parameters", parameters);
        sendBroadcast(i);
    }
}

Мой файл манифеста

<?xml version="1.0" encoding="UTF-8"?>
<manifest android:versionCode="1" android:versionName="1.0"
    package="com.package" xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-sdk android:minSdkVersion="7"/>
    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:label="@string/app_name" android:name="MyActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <receiver android:name="MyReceiver">
            <intent-filter>
                <action android:name="com.kiosk.cbal.CALL_RECEIVER"/>
            </intent-filter>
        </receiver> 

    </application>
    <uses-permission android:name="android.permission.BATTERY_STATS"/>
</manifest>

Теперь, как я смогу позвонить получателю вещания через занятие?

Ответы [ 2 ]

0 голосов
/ 07 августа 2011

Обновление: Код выше все еще имеет Intent i = new Intent("com.package.MyReceiver");.Это должно быть Intent i = new Intent("com.kiosk.cbal.CALL_RECEIVER");

Между тем, в вашем манифесте имя получателя указано как <receiver android:name="MyReceiver">.обратите внимание, что android:name должно быть либо полностью определенным именем класса, либо именем относительно имени пакета.Способ PackageManager различает два: наличие . в начале имени.Таким образом, в вашем объявлении PackageManager, скорее всего, пытается создать экземпляр MyReceiver' instead of com.package.MyReceiver`.

В любом случае вам следует проверить файл журнала Android для получения подробной информации о том, что происходит снамерение, которое вы транслируете.


Строка, передаваемая конструктору Intent, должна совпадать со строкой, указанной для элемента действия для вашего получателя в манифесте.Вы создаете Intent с именем класса получателя, но ваш получатель объявлен для прослушивания намерения VIEW.

0 голосов
/ 07 августа 2011

Удалить пробел из имени действия.Используйте имя при создании намерения.

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