【问题标题】:android call function through broadcastreceiverandroid通过broadcastreceiver调用函数
【发布时间】:2016-06-25 05:47:21
【问题描述】:

我有一个 broadcastreceiver.class

 public class Myclass extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {

    }
}

我想在我的活动中调用广播接收器中的函数。请用一些代码告诉我如何在此处制作这是我的活动

public class MainActivity extends AppCompatActivity {
    Context context = this;
    private AudioManager myAudioManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        public void myfunction()
        {
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {

                PackageManager p = getPackageManager();
                ComponentName componentName = new ComponentName(getApplicationContext(),com.example.faisal.wifiprofile.MainActivity.class);
                p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
                handler.postDelayed(this, 100000);
            }
        }, 100000);
        }
    }
}

这是函数名 myfunction 我想在广播接收器中调用这个函数请告诉我好的解决方案或编辑我的代码提前谢谢

【问题讨论】:

标签: android android-activity android-broadcastreceiver


【解决方案1】:

这应该可行:

public class Myclass extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
   MainActivity.myfunction();
}

}

public class MainActivity extends AppCompatActivity {
Context context = this;
private AudioManager myAudioManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

    public static void myfunction()
    {
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {

            PackageManager p = getPackageManager();
            ComponentName componentName = new ComponentName(getApplicationContext(),com.example.faisal.wifiprofile.MainActivity.class);
            p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
            handler.postDelayed(this, 100000);
        }
    }, 100000);
    }

}

【讨论】:

  • 当我把函数放在类中它给出的错误无法解决
  • 已更新以可能解决您的错误。如果它不起作用,请在此处发布您收到的完整错误消息
  • public static void myfunction() { Toast.makeText(MainActivity.this, "现在处于振铃模式", Toast.LENGTH_SHORT).show(); }
  • 这里是 MainActivity 中的错误。它说 make myfunction not static
  • @NosheenCh 这是因为您无法从静态函数访问非静态字段。改用: Toast.makeText(context, "Now in Ringing Mode", ... 在你的类中声明变量 "static Context context;",并在 onCreate() 中分配给它 "this"。最好将你的原始代码更新为显示它的当前状态。
猜你喜欢
  • 1970-01-01
  • 2017-03-27
  • 2017-08-09
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多