Сервис Android без графического интерфейса - PullRequest
0 голосов
/ 10 октября 2011

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

Файл манифеста

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="rit.utility"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
   <service android:enabled="true" android:name="MyService"></service> 
    <receiver android:enabled="true" android:name="MyIntentReceiver">       
    <intent-filter>         
    <action android:name="MY_INTENT" />       
    </intent-filter>     
    </receiver> 
</application>    

Класс получателя

    public class MyIntentReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context _context, Intent _intent)
    {
        if(_intent.getAction().equals("MY_INTENT"))
        {
        _context.startService(new Intent(_context, MyService.class)); 
        }
    }
}

Класс обслуживания

    public class MyService extends Service
{
        private final IBinder mBinder = new MyBinder();
        public void onCreate()
        {
            super.onCreate();
            createToast();
        }
        public void createToast()
        {
             TextView textView = new TextView(this);
             textView.setBackgroundColor(Color.GRAY);
             textView.setTextColor(Color.BLUE);
             textView.setPadding(10,10,10,10);
             textView.setText("Textview as Toast");
             /** Create a Toast to display a View.
             * Here we are going to display a TextView.
             * Toast setView() is used to display a View.
             * Toast Display Duration is Long. So it will display for long time.
             * Toast setGravity() is used to set position to display the toast. */
             Toast toastView = new Toast(this);
             toastView.setView(textView);
             toastView.setDuration(Toast.LENGTH_LONG);
             toastView.setGravity(Gravity.CENTER, 0,0);
             toastView.show();
       }

        @Override
        public IBinder onBind(Intent intent)
        {
            // TODO Auto-generated method stub
            return null;
        }
        public class MyBinder extends Binder
        {
            MyService getService()
            {
                return MyService.this;
            }
        }

}

, пожалуйста, помогитеменя, где я делаю ошибку для показа собственного тоста ???

Ответы [ 3 ]

1 голос
/ 14 мая 2013

несколько поздно, но кто-то может найти это полезным:

Вам не хватает:

<category android:name="android.intent.category.DEFAULT" />

поэтому у вас должно быть

<intent-filter>

<category android:name="android.intent.category.DEFAULT" />

<action android:name="MY_INTENT" />

</intent-filter>

0 голосов
/ 11 октября 2011

Вы уверены, что класс обслуживания, что MyService запущен или создан ??

Когда вы хотите запустить службу, вы должны убедиться, что MyIntentReceiver включен, есть способ, который вы можете попробовать: вы можете установитьследующий код в вас Manifest.xml

 <receiver android:name=".MyReceiver">
         <intent-filter>
            <action android:name="android.intent.action.AIRPLANE_MODE" />
        </intent-filter>
 </receiver>

запустите ваше приложение;затем переключите ваше устройство в режим полета, вы обнаружите, что ваш сервис создан;

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

0 голосов
/ 10 октября 2011

изменение в манифесте ::

<service android:enabled="true" android:name="MyService"></service> 
    <receiver android:enabled="true" android:name="MyIntentReceiver">   

до

<service android:enabled="true" android:name=".MyService"></service> 
    <receiver android:enabled="true" android:name=".MyIntentReceiver">   
...