سؤال

ولقد خلق النشاط الذي يعني فقط أن تنطلق من وصلة لا أريد هذا النشاط أن يكون واجهة المستخدم الرسومية (باستخدام فلتر الأهداف.) - أريد فقط أن تبدأ خدمة ووضع تنبيه في شريط. لقد حاولت وضع فلتر الأهداف للارتباط في خدمة بلدي، ولكن هذا لا يعمل. هل هناك شيء أفضل من أن يفعل هذا من شأنه أن يجيب على مرشحات نية - أو يمكن أنا فقط جعل نشاطي يكن لديك واجهة المستخدم الرسومية
آسف إذا أنا يجري مربكة، وإسحاق

هل كانت مفيدة؟

المحلول

وأفضل رهان ويبدو أن استخدام BroadcastReceiver. يمكنك إنشاء BroadcastReceiver الجديد الذي يستمع لنية لتحريك الإخطار الخاص بك والبدء في خدمتكم مثل هذا:

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

ويمكنك تسجيل هذا IntentReceiver مباشرة في تطبيق ظاهر دون الحاجة إلى إدراجه ضمن آخر:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.domain.myapplication">
  <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>
</manifest> 

نصائح أخرى

ومرددا استجابة السابقة، يجب عدم استخدام جهاز استقبال البث.

في نفس الوضع، ما فعلته كان لاعلان موضوع هكذا:

<activity android:name="MyActivity"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.NoDisplay">

ولست متأكدا إذا خدمة ستعمل، ولكن جهاز استقبال البث بالتأكيد لا. وأطلق على رابط باستخدام startActivity (). استقبال بث لا يمكن الرد على هذا.

http://developer.android.com/reference/android/content /BroadcastReceiver.html

وFTA: لاحظ أنه، على الرغم من أن يتم استخدام الفئة نوايا لإرسال واستقبال هذه البرامج، وآلية البث نوايا هنا منفصلة تماما عن النوايا التي يتم استخدامها لبدء الأنشطة مع Context.startActivity (). لا توجد وسيلة لBroadcastReceiver لرؤية أو النوايا القبض على استخدامها مع startActivity ()؛ وبالمثل، عند بث نية، وأنك لن تجد أو بدء تشغيل آخر.

والاستفادة من خدماته. I يعمل بالتأكيد. عند النقر على البرنامج، سيكون لها القيام بعملها دون أي واجهة المستخدم الرسومية. استخدام pendintgintent ... getService (MySerice.class ....). ثم، إنشاء فئة جديدة MyService توسيع الطبقة الخدمة. داخل MyService.class، تجاوز onStart () وتفعل ما تريد القيام به.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top