【发布时间】:2014-10-07 01:50:41
【问题描述】:
所以我创建了一个应用程序,它可以自动为用户连接到 Android 上的无线显示器。我发现最简单的方法是打开屏幕镜像设置。这使用户更容易,因此他们不必自行进行设置并启用它。
现在我已连接到显示器,我希望 Screen Mirroring 屏幕消失并返回应用程序或用户需要时返回主屏幕。
这是我用来打开屏幕镜像设置以在用户单击按钮后将其连接到显示器的代码:
try
{
activityint = 1;
Log.d("DEBUG", "open WiFi display settings in HTC");
startActivityForResult(new Intent("com.htc.wifidisplay.CONFIGURE_MODE_NORMAL"),activityint);
} catch (Exception e)
{
try
{
activityint = 2;
Log.d("DEBUG", "open WiFi display settings in Samsung");
startActivityForResult(new Intent("com.samsung.wfd.LAUNCH_WFD_PICKER_DLG"),activityint);
}catch (Exception e2)
{
activityint=3;
Log.d("DEBUG", "open WiFi display settings in stock Android");
startActivityForResult(new Intent("android.settings.WIFI_DISPLAY_SETTINGS"),activityint);
}
}
然后我有一个广播接收器来监听 WIFI_P2P_CONNECTION_CHANGED_ACTION。发生这种情况时,它会先查看我们现在是否已连接,然后再启动其他操作,然后尝试关闭设置活动。
@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if (action.equals(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION))
{
/**
* What to do if the P2P connection has changed
*/
try
{
NetworkInfo info = intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);
if(info!=null && info.isConnected())
{
connected(true);
//Kill the settings activity
finishActivity(activityint);
}else if(info!=null && !info.isConnected())
{
connected(false);
}
}catch(Exception e)
{
Log.e("DEBUG", "exception", e);
}
}
}
问题在于它会在连接完成之前终止设置活动。因此,它将退出设置活动,并且 Screen Mirroring 连接将在连接之前取消。有没有更好的方法或不同的方法可以退出设置活动?还是我在听接收器中的错误意图?
谢谢
【问题讨论】:
标签: android android-intent android-activity settings