The*_*las 5 settings android android-intent android-activity
因此,我创建了一个应用程序,可以自动为用户连接到 Android 上的无线显示器。我发现最简单的方法是打开屏幕镜像设置。这使用户更容易,因此他们不必自己进行设置并启用它。
现在我已连接到显示器,我希望屏幕镜像屏幕消失并返回到应用程序或主屏幕(如果用户愿意)。
以下是我用来打开屏幕镜像设置的代码,以便在用户单击按钮后将其连接到显示器:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个广播接收器监听 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是它会在连接完成之前终止设置活动。因此,它将退出设置活动,并且屏幕镜像连接将在连接前一刻取消。是否有更好的方法或不同的方法可以退出“设置”活动?或者我在接收器中听到了错误的意图?
谢谢
The*_*las -1
我想我正在回答我自己的问题。我发现这段代码允许我发送延迟响应。我知道这是糟糕的编程,因为有些设备会先于其他设备完成,但这目前对我有用。如果有人知道更好的方法,请随时告诉我。
这出现在我的广播接收器的 onReceive 方法中。
NetworkInfo info = intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);
if(info!=null && info.isConnected())
{
connected(true);
new Handler().postDelayed(new Runnable()
{
public void run()
{
finishActivity(activityint);
}
}, 5000);
}else if(info!=null && !info.isConnected())
{
connected(false);
}
Run Code Online (Sandbox Code Playgroud)
编辑:这实际上对我不起作用。经过进一步测试,我发现即使我刚刚打开应用程序,它也会在几分钟后将我踢回主屏幕。这很烦人。有人知道更好的主意吗?
| 归档时间: |
|
| 查看次数: |
2732 次 |
| 最近记录: |