2017-02-08 2 views
0

этот вопрос может показаться довольно широким, но я уверен, что как только вы прочитаете, контекст станет ясным.Как использовать onNewIntent в классе неактивности

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

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

Вот что я имею в виду.

public class MyClass { 

    private PendingIntent mPendingIntent; 
    private IntentFilter[] mFilters; 


    public MyClass(){ 
    this.activity = activity; 
    doAction(); 
    } 

    public void doAction(){ 
    mPendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), 0, new Intent(activity.getApplicationContext(),getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); 
     mFilters = new IntentFilter[]{ 
       new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED), 
       new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED), 
       new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED)}; 
    } 


    //Now i want to do some action when there is a new intent but since it doesn't extend activity, this don't work. Extending activity will mean using onCreate and all that other good stuff which i don't want 
    @Override 
    public void onNewIntent(Intent intent) { 
    Toast.makeText(activity.getApplicationContext(), "Got to intent", Toast.LENGTH_SHORT).show(); 
    super.onNewIntent(intent); 
    doStuffWithIntent(intent); 

    //This block doesn't work. I'm looking for alternative to get working. 
    } 


} 

Поскольку класс не нуждается в интерфейсе, я не вижу причин, по которым он должен расширять деятельность. Но за то, что я хочу сделать правильно, мне нужно проверить новые намерения.

Хотелось бы узнать, есть ли способ обхода для не-активного класса для прослушивания новых намерений.

+1

Вы, кажется, добавив ненужные сложности в этом. Вам просто нужна «активность» без пользовательского интерфейса? http://stackoverflow.com/a/2704801/4252352 –

+0

спасибо @MarkKeen это действие без пользовательского интерфейса не идет, где правильно? –

+0

Я действительно не понимаю, что вы подразумеваете под 'go no where' - вы определяете, что делает ваша деятельность? –

ответ

1

мне просто нужно это нюхать для некоторых намерений в фоновом режиме

Есть три «каналы» для Intents: начиная деятельность, начиная и обязательные для обслуживания и отправки передач.

Три действия Intent, которые вы указываете в коде, используются для начала деятельности. Они будут доставляться только на активность, и вы не можете «обнюхивать» их любыми другими способами (за исключением, возможно, укоренения устройства или создания пользовательского ПЗУ).

Хотелось бы узнать, есть ли способ обхода для не-активного класса для прослушивания новых намерений.

Имейте деятельность, которая вызывается с onNewIntent(), пересылает событие в класс бездействия.

0

другой вариант был бы сохранить ссылку на экземпляр вашего класса в вашей деятельности, а затем вызвать публичный метод на классе в onNewIntent() методе активности в

Смежные вопросы