Запрос состояния док станции.

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
R6MF49T2
Сообщения: 3
Зарегистрирован: 25 июл 2013, 11:39

Запрос состояния док станции.

Сообщение R6MF49T2 » 25 июл 2013, 11:43

Всем привет. Необходимо запросить состояние док станции. Делаю так:

Код: Выделить всё

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:onClick="gettext"
        android:text="Button" />

</RelativeLayout>

Код: Выделить всё

package ru.r6mf49t2.test;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	Intent dockIntent;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
		dockIntent = registerReceiver(null, ifilter);
	}
	
	public void gettext(View v){
		int dockState = dockIntent.getIntExtra(Intent.EXTRA_DOCK_STATE, -1);

		Toast.makeText(this, "Status = " + dockState, Toast.LENGTH_LONG).show();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

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

R6MF49T2
Сообщения: 3
Зарегистрирован: 25 июл 2013, 11:39

Re: Запрос состояния док станции.

Сообщение R6MF49T2 » 25 июл 2013, 13:14

как я понимаю проблема в том что dockIntent = registerReceiver(null, ifilter1) почему то возвращает значение null

R6MF49T2
Сообщения: 3
Зарегистрирован: 25 июл 2013, 11:39

Re: Запрос состояния док станции.

Сообщение R6MF49T2 » 25 июл 2013, 13:25

Всё, сам разобрался. null возвращаеться до тех пор пока не будет хотябы раз подключена док станция. После этого все норм работает.

Ответить