gpt4 book ai didi

android - onActivityResult 在调用设置时总是返回 0 (RESULT_CANCELED)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:12 33 4
gpt4 key购买 nike

我可能以错误的方式解决了这个问题..

我正在做的是在没有互联网连接时显示一条警告消息,“确定”按钮会将用户引导至 wifi 设置以打开互联网。当用户在更改(或不更改)互联网设置后返回到应用程序时,我希望应用程序执行的操作是重新加载应用程序或 Activity 所在的位置。

为此,我正在对“确定”按钮执行以下调用:

 static void startAct(Activity ctxt)
{
ctxt.startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), WIFI_SETTINGS);

}

在显示此消息的 Activity 类上,我有以下信息:

public void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);
if (requestCode == WIFI_SETTINGS && resultCode == RESULT_OK)
{
this.finish();

Intent myIntent = new Intent(this, MyActivity.class);
startActivity(myIntent);
}
}

但 resultCode 始终为 0,onActivityResult 在按下“确定”按钮后立即被调用。

我应该以不同的方式处理这个问题吗?当用户从 wifi 设置返回时,我如何重新加载/刷新我的应用程序?

我检查过类似的答案,但他们似乎在同一个应用程序中使用一个 Activity ,所以他们可以调用 set_result(...),但我不能在这里这样做。

谢谢!

最佳答案

正如其他人所说,您不应该调用 finish——调用 startActivityForResult 也没有多大帮助。即使 resultCode 不是 0,通常也需要几秒钟才能连接到 WiFi。

因此,要回答您的问题,您应该使用 BroadcastReceiver 并监听网络更改 Intent 。

这段代码有点旧,但我在我的一个应用程序中做了类似的事情。它应该可以帮助您入门。

protected void registerWifiReceivers()
{
IntentFilter f1 = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
IntentFilter f2 = new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION;
this.registerReceiver(mReceiver, f1);
this.registerReceiver(mReceiver, f2);
}



final BroadcastReceiver mReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
Log.d ( TAG, "BroadcastReceiver: " + action );

if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION))
{
Log.i ( TAG, "handling event: WifiManager.NETWORK_STATE_CHANGED_ACTION action: "+action );
handleWifiStateChange(intent);
}
else if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action))
{
Log.i ( TAG, "ignoring event: WifiManager.WIFI_STATE_CHANGED_ACTION action: "+action );
}
}
}

protected void handleWifiStateChange ( Intent intent )
{
NetworkInfo info = (NetworkInfo)intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getState().equals(NetworkInfo.State.CONNECTED))
{
//do something...
}

}

关于android - onActivityResult 在调用设置时总是返回 0 (RESULT_CANCELED),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12607085/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com