Android 如何从其他应用程序打开WifiDisplay设置?
我想从我的应用程序中打开Android4.2设置WifiDisplaySettingsActivity 我试过了Android 如何从其他应用程序打开WifiDisplay设置?,android,android-intent,android-fragments,android-fragmentactivity,Android,Android Intent,Android Fragments,Android Fragmentactivity,我想从我的应用程序中打开Android4.2设置WifiDisplaySettingsActivity 我试过了 Intent i; PackageManager manager = getActivity().getPackageManager(); try { i = manager.getLaunchIntentForPackage("com.android.settings.wfd"); if
Intent i;
PackageManager manager = getActivity().getPackageManager();
try {
i = manager.getLaunchIntentForPackage("com.android.settings.wfd");
if (i == null)
throw new PackageManager.NameNotFoundException();
i.addCategory(Intent.ACTION_MAIN);
startActivity(i);
} catch (PackageManager.NameNotFoundException e) {
}
及
但没有一个能起作用。
我转到AndroidManifest.xml查看代码
<activity android:name="Settings$WifiDisplaySettingsActivity"
android:label="@string/wifi_display_settings_title"
android:taskAffinity=""
android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.WIFI_DISPLAY_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.wfd.WifiDisplaySettings" />
</activity>
它正在设置首选项片段。。。那我怎么打开它呢?用这个
ConnectivityManager manager = (ConnectivityManager)
getSystemService(MainActivity.CONNECTIVITY_SERVICE);
/*
* 3G confirm
*/
Boolean is3g = manager.getNetworkInfo(
ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
/*
* wifi confirm
*/
Boolean isWifi = manager.getNetworkInfo(
ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
if (is3g) {
textView.setText("3G");
} else if (isWifi) {
textView.setText("wifi");
} else {
textView.setText("nothing");
// Activity transfer to wifi settings
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
}
这可能会帮助您使用
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
或
startActivity(新意图(“android.settings.WIFI\u DISPLAY\u settings”) 无线显示设置活动可以通过Intent
的“android.Settings.WIFI\u Display\u Settings”调用。
一些原始设备制造商使用其他意图
三星:“com.Samsung.wfd.LAUNCH\u wfd\u PICKER\u DLG”
HTC:“com.HTC.wifidisplay.CONFIGURE\u MODE\u NORMAL”
所以,不能保证有效
我处理了同样的问题,最后得到了以下代码
try {
Log.d("TAG", "open WiFi display settings in HTC");
godController.getActivity().startActivity(new
Intent("com.htc.wifidisplay.CONFIGURE_MODE_NORMAL"));
} catch (Exception e) {
try {
Log.d("TAG", "open WiFi display settings in Samsung");
godController.getActivity().startActivity(new
Intent("com.samsung.wfd.LAUNCH_WFD_PICKER_DLG"));
} catch (Exception e2) {
Log.d("TAG", "open WiFi display settings in stock Android");
godController.getActivity().startActivity(new
Intent("android.settings.WIFI_DISPLAY_SETTINGS"));
}
}
请让我知道它是否可以更好地实施。?,我的意思是我只想启动Android设置应用程序,但不想连接到wifi。我不知道你的意思。我尝试了,但没有成功。它进入了Wi-Fi设置页面,但不是Wi-Display页面谢谢大家…但问题是它是设置。WIFI\u Display\u设置,而不是ACTION\u WIFI\u设置,所以eclipse无法编译。您是如何发现这些非标准设置面板的?我需要找到Xperia Z3的miracast设置面板您在中看不到这些意图视图操作字符串
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
public void openWifiSettings(){
final Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
final ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.wifi.WifiSettings");
intent.setComponent(cn);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity( intent);
}
try {
Log.d("TAG", "open WiFi display settings in HTC");
godController.getActivity().startActivity(new
Intent("com.htc.wifidisplay.CONFIGURE_MODE_NORMAL"));
} catch (Exception e) {
try {
Log.d("TAG", "open WiFi display settings in Samsung");
godController.getActivity().startActivity(new
Intent("com.samsung.wfd.LAUNCH_WFD_PICKER_DLG"));
} catch (Exception e2) {
Log.d("TAG", "open WiFi display settings in stock Android");
godController.getActivity().startActivity(new
Intent("android.settings.WIFI_DISPLAY_SETTINGS"));
}
}