Обнаружить USB в Broadcastreceiver - что мне не хватает? - PullRequest
3 голосов
/ 26 июня 2011

Мой код чего-то не хватает, вам нужны глаза, чтобы найти.

Я создал вещательный приемник USBOnReciever.

public class USBOnReceiver extends BroadcastReceiver
{ 
@Override
public void onReceive(Context context, Intent intent) 
{
    Toast.makeText(context,  "Phone was connected to power" ,Toast.LENGTH_LONG).show();
    Log.d("tag", "Phone was connected to power");
} 
} 

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

<application>
    <receiver android:name=".USBOnReceiver" android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.UMS_CONNECTED" />
        </intent-filter>
    </receiver>

</application>

и здесьэто когда я застрял.при подключении USB ничего не происходит (я тоже пробовал с power_connected).

Я понимаю, что могу зарегистрировать BR либо через манифест, либо программно.Но не уверен, как это реализовать.

В своей деятельности я добавил

        USBOnReceiver myReceiver = new USBOnReceiver();

Но это выглядит настолько несвязанным и бесполезным: - /

Буду рад вашим глазам здесь.

1 Ответ

2 голосов
/ 27 июня 2011

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

К теме регистрации в коде:

Да, это возможно.Просто создайте экземпляр вашего получателя и используйте Context.registerReceiver (mReceiver, новый IntentFilter (...)).

Если вы зарегистрировались в своем манифесте, в этом нет необходимости.BroadcastReceivers только в прямом эфире для выполнения onReceive ().Поэтому система создает экземпляры и впоследствии убивает их.

...