Мне очень трудно общаться с приемником вещания на основной вид деятельности службы переднего плана. Все, что я хочу сделать, это взять то, что я получил от широковещательного приемника, и вызвать функцию, которая работает в службе переднего плана. Я пытаюсь не использовать метод 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 (). Как я могу это сделать?