アクションボタンをクリックしてもメソッドを直接呼び出すことはできません。
これを実行するには、BroadcastReceiverまたはServiceでPendingIntentを使用する必要があります。次に、BroadcastRecieverを使用したPendingIntentの例を示します。
まず通知今
public static void createNotif(Context context){
...
//This is the intent of PendingIntent
Intent intentAction = new Intent(context,ActionReceiver.class);
//This is optional if you have more than one buttons and want to differentiate between two
intentAction.putExtra("action","actionName");
pIntentlogin = PendingIntent.getBroadcast(context,1,intentAction,PendingIntent.FLAG_UPDATE_CURRENT);
drivingNotifBldr = (NotificationCompat.Builder) new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.steeringwheel)
.setContentTitle("NoTextZone")
.setContentText("Driving mode it ON!")
//Using this action button I would like to call logTest
.addAction(R.drawable.smallmanwalking, "Turn OFF driving mode", pIntentlogin)
.setOngoing(true);
...
}
に構築することができます。この意図
public class ActionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Toast.makeText(context,"recieved",Toast.LENGTH_SHORT).show();
String action=intent.getStringExtra("action");
if(action.equals("action1")){
performAction1();
}
else if(action.equals("action2")){
performAction2();
}
//This is used to close the notification tray
Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
context.sendBroadcast(it);
}
public void performAction1(){
}
public void performAction2(){
}
}
が
<receiver android:name=".ActionReceiver"></receiver>
マニフェストにブロードキャストレシーバーを宣言いたしますレシーバ
希望します。
ありがとう、これは多くの意味があります。しかし、私は 'intentAction'を' addAction'に渡した理由についてちょっと混乱しています。それは 'pIntentlogin'でしょうか? –
が更新されました。私の悪い! :) –
ありがとうございました! –