相关疑难解决方法(0)

Broadcastreceiver用于检测网络是否已连接

我正试图获得用户连接到网络的那一刻,然后我认为这BroadcastReceiver是一个很好的方法......我想做的事情是,当用户连接到网络时,知道该网络是否已连接到Internet .

主要的是知道WiFi是否需要Browse Log in示例:Handling Network Sign-On文档

到目前为止我尝试过什么?

我把我BroadcastReceiver变成了这个

if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
NetworkInfo networkInfo = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if (networkInfo != null && networkInfo.getDetailedState() == NetworkInfo.DetailedState.CONNECTED) {
    Log.d("Network", "Internet YAY");
} else if (networkInfo != null && networkInfo.getDetailedState() == NetworkInfo.DetailedState.DISCONNECTED) {
    if (isNetworkOnline()) {
        Log.d(TAG, String.valueOf(tikis));
        NetTask TeInternet = new NetTask();
        TeInternet.execute("https://www.google.com");


    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试连接到WiFi没有Internet Connection输入的是这样的:

D/Network? Internet YAY
D/Network? Internet YAY
D/Network? Internet YAY
D/RequiresLoginBroadcast? 1 //this occurs sometimes …
Run Code Online (Sandbox Code Playgroud)

android

23
推荐指数
2
解决办法
3万
查看次数

BroadcastReceiver和Activity之间的通信 - android

我的应用程序中有一个广播接收器,每次用户接到来电时都会被触发.现在,当它发生时,我需要广播接收器来调用特定活动中的特定方法.现在,我尝试将此方法设置为静态,因此可用,但有些东西告诉我这是一个非常糟糕的主意.

因此,我尝试在我的活动中实例化广播接收器而不在我的清单中声明它但问题是 - 当应用程序关闭时,活动不存在,因此我无法调用我的方法.

所以我的问题是 - 当广播接收器被激发时,如何在不使其成为"公共静态"的情况下调用此方法?

这是我的活动代码(我删除了不相关的部分)

package com.silverfix.ringo.activities;

import com.silverfix.ringo.R;
import com.silverfix.ringo.activities.fragments.DataManagerFragment;

import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

public class RingtonesActivity extends Activity{

    private DataManagerFragment dataManagerFragment;
    private IntentFilter filter;
    private BroadcastReceiver phoneCall;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ringtones);
        ActionBar ab = getActionBar();
        ab.setDisplayShowTitleEnabled(false);
        ab.setDisplayHomeAsUpEnabled(true);
        dataManagerFragment = new DataManagerFragment();
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.add(dataManagerFragment, "DataManagerFragment");
        ft.commit();
        filter = new IntentFilter();
        filter.addAction("android.intent.action.PHONE_STATE");
        phoneCall = new BroadcastReceiver() {

            @Override
            public void …
Run Code Online (Sandbox Code Playgroud)

methods android invoke broadcastreceiver android-activity

21
推荐指数
2
解决办法
2万
查看次数

带有广播接收器的Android Alarm Manager在代码而不是清单中注册

我想在某个时间使用警报运行一些代码.我已经成功实现了一个警报,广播接收器在清单中注册,但我理解它的方式,这种方法使用一个单独的类广播接收器.

我可以使用此方法启动另一个活动,但我无法使用它在我的主要活动中运行方法?

(如何通过广播接收器通知正在运行的活动?)

所以我一直试图在我的主要活动中注册我的广播接收器,如上面的答案所述.

private BroadcastReceiver receiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "hello", Toast.LENGTH_SHORT).show();
        uploadDB();         
    }
};    

public void onResume() {
    super.onResume();

    IntentFilter filter = new IntentFilter();
    filter.addAction(null);

    this.registerReceiver(this.receiver, filter);
}

public void onPause() {
    super.onPause();

    this.unregisterReceiver(this.receiver);
}
Run Code Online (Sandbox Code Playgroud)

但是我无法让它与闹钟管理器一起工作,我不确定如何将警报意图链接到广播接收器.有人能指出我在活动中动态注册警报管理器广播接收器的例子吗?或解释我会怎么做?

android broadcastreceiver alarmmanager

12
推荐指数
1
解决办法
3万
查看次数