我一直在使用此代码从我的服务中调用另一个类中的方法。但是,它只适用于显示通知的方法,并在我尝试调用除此之外的任何其他方法时给出了此错误" 无法对非静态方法getSystemService(String)进行静态引用类型活动"
服务
package com.example.notifypro;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class NotifyService extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MainActivity.mehtodName(context);
// ... do what you need to do here...
}
}
MainActivity.java (被调用的方法没有问题)
public static void mehtodName(Context context) {
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
new Intent(context, MainActivity.class), 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
context).setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("My notification")
.setContentText("Hello World!");
mBuilder.setContentIntent(contentIntent);
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
mBuilder.setAutoCancel(true);
NotificationManager mNotificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, mBuilder.build());
}
我试图调用的方法
private static void MyMethod() {
ConnectivityManager cmanager = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
NetworkInfo info = cmanager.getActiveNetworkInfo();
if (info != null && info.isConnected()) {
if (info.getType() == ConnectivityManager.TYPE_WIFI) {
// img_b1.setImageResource(R.drawable.index2);
} else if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
//img_b2.setImageResource(R.drawable.index2);
}
} else {
//img_b3.setImageResource(R.drawable.index2);
}
}
答案 0 :(得分:0)
在MyMethod()
中传递上下文private static void MyMethod(Context context)
使用Context.CONNECTIVITY_SERVICE取代this.CONNECTIVITY_SERVICE
ConnectivityManager cmanager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
答案 1 :(得分:0)
将上下文传递给您的方法
private static void MyMethod(Context context) {
ConnectivityManager cmanager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cmanager.getActiveNetworkInfo();
if (info != null && info.isConnected()) {
if (info.getType() == ConnectivityManager.TYPE_WIFI) {
// img_b1.setImageResource(R.drawable.index2);
} else if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
// img_b2.setImageResource(R.drawable.index2);
}
} else {
// img_b3.setImageResource(R.drawable.index2);
}
}