从服务中调用类中的方法

时间:2015-12-30 11:34:22

标签: android methods service

我一直在使用此代码从我的服务中调用另一个类中的方法。但是,它只适用于显示通知的方法,并在我尝试调用除此之外的任何其他方法时给出了此错误" 无法对非静态方法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);
    }
}

2 个答案:

答案 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);
        }
    }