2

AndroidListenerServiceを使用してAndroid端末の通知にアクセスしたいとします。私は多くのチュートリアルをチェックしましたが、どこからサービスを呼び出すことができません。AndroidでNotificationListenerServiceを起動する方法

MainActivityでbindServiceまたはstartServiceを使用する必要がありますか?意図はどのように見えますか?誰かが私にこの構文を示すことができますか?

チェックアウト私が勉強していたサービスの実装の1:

public class NLService extends NotificationListenerService { 

Context context; 

@Override 
public void onCreate() { 

    super.onCreate(); 
    context = getApplicationContext(); 


} 


@Override 
public void onNotificationPosted(StatusBarNotification sbn) { 
    String pack = sbn.getPackageName(); 
    String ticker =""; 
    if(sbn.getNotification().tickerText !=null) { 
     ticker = sbn.getNotification().tickerText.toString(); 
    } 
    Bundle extras = sbn.getNotification().extras; 
    String title = extras.getString("android.title"); 
    String text = extras.getCharSequence("android.text").toString(); 
    int id1 = extras.getInt(Notification.EXTRA_SMALL_ICON); 
    Bitmap id = sbn.getNotification().largeIcon; 


    Log.i("Package",pack); 
    Log.i("Ticker",ticker); 
    Log.i("Title",title); 
    Log.i("Text",text); 

    Intent msgrcv = new Intent("Msg"); 
    msgrcv.putExtra("package", pack); 
    msgrcv.putExtra("ticker", ticker); 
    msgrcv.putExtra("title", title); 
    msgrcv.putExtra("text", text); 
    if(id != null) { 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     //id.compress(Bitmap.CompressFormat.PNG, 100, stream); 
     byte[] byteArray = stream.toByteArray(); 
     msgrcv.putExtra("icon",byteArray); 
    } 
    LocalBroadcastManager.getInstance(context).sendBroadcast(msgrcv); 

} 
@Override 

public void onNotificationRemoved(StatusBarNotification sbn) { 
    Log.i("Msg","Notification Removed"); 

} 

}

+0

あなたはアンドロイドシステムから通知を受ける必要がありますか? – dipali

答えて

3

は、着信通知をリスニングするために、明示的に開始する必要が彼らのではありません。まず、以下の権限を持つマニフェストにあなたのサービスを定義する - android.permission.BIND_NOTIFICATION_LISTENER_SERVICE

<service android:name=".MyNotificationListener" 
     android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"> 
    <intent-filter> 
     <action android:name="android.service.notification.NotificationListenerService" /> 
    </intent-filter> 
</service> 

世話をするもう一つは、あなたが以下のいずれかの意図を使用して権限を付与する必要がありますということです -

Intent intent=new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"); 

または通知アクセスを手動で許可することにより、

+0

どの方にこの目的に合格する必要がありますか? – user3348949

+0

実例を見せてもらえますか? – user3348949

+0

上記の意図は、通知設定を開くために使用します。通知アクセスを求めるすべてのアプリを一覧表示します。通知リスナーサービスを使用する前に、アプリに通知アクセスを許可する必要があります。 – Gautam

関連する問題