Вызовите функцию основного действия Android, которая работает в службе переднего плана от приемника вещания, который был получен от кнопки действия? - PullRequest
0 голосов
/ 15 февраля 2020

Мне очень трудно общаться с приемником вещания на основной вид деятельности службы переднего плана. Все, что я хочу сделать, это взять то, что я получил от широковещательного приемника, и вызвать функцию, которая работает в службе переднего плана. Я пытаюсь не использовать метод stati c, потому что мне нужно вызвать метод, который не может быть stati c. И если я пытаюсь создать экземпляр класса, я получаю сообщение об ошибке, потому что класс может не работать. Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference Есть ли другой способ сделать это? Может быть, я думаю об этом совершенно неправильно. У меня есть основной класс, класс обслуживания и класс приемника вещания. Все поможет. Спасибо!

AppService. java

    public class AppService extends Service
{

public int onStartCommand(Intent intent,int flags, int startId)
{
     Intent notificationIntent = new Intent(this,MapsActivity.class);
     PendingIntent pendingIntent = PendingIntent.getActivity(this,0,notificationIntent,0);

     Intent ActionCancelIntent = new Intent(this,ActionCancelReceiver.class);

     PendingIntent CancelIntent = PendingIntent.getBroadcast(this,1,ActionCancelIntent,PendingIntent.FLAG_UPDATE_CURRENT);

     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this,CHANNEL_ID)
                .setContentTitle(TopText)
                .setContentText(BottomText)
                .setSmallIcon(R.drawable.ic_map_marker)
                .setContentIntent(pendingIntent)
                .setPriority(NotificationCompat.PRIORITY_MAX)
                .setOngoing(true)
                .setColor(Color.GREEN)
                .addAction(R.drawable.ic_map_marker,CancelName,CancelIntent);

        startForeground(1,notificationBuilder.build());

     return START_NOT_STICKY;
}
}

ActionCancelReceiver. java

public class ActionCancelReceiver extends BroadcastReceiver
{

    public String TAG = "MyApp";

    @Override
    public void onReceive(Context context, Intent intent)
    {
        Log.e(TAG, "Clicked Cancel");

        CancelActionButton();

        Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        context.sendBroadcast(it);
    }

}

MapsActivity. java

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{

    public static final String TAG = "MyApp";

 public static void CancelActionButton()
{
    Log.d(TAG,"CancelActionMain");
}

Этот код работает и печатает CancelActionMain, но я хочу поместить метод нестандартного c в CancelActionButton (). Как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...