1

我想從我的應用程序中打開Android4.2設置WifiDisplaySettingsActivity。如何從另一個應用程序打開WifiDisplay設置?

我試圖

 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) { 

     } 

final Intent intent = new Intent(Intent.ACTION_MAIN, null); 
    intent.addCategory(Intent.CATEGORY_LAUNCHER); 
    final ComponentName cn = new ComponentName("com.android.settings.wfd","com.android.settings.wfd.WifiDisplaySettings"); 
    intent.setComponent(cn); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 

但沒有人可以工作。 我去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> 

的問題是,我知道這是一個片段類,我知道它的包名com.android.settings.wfd,但我仍然不知道如何打開它,尤其是我不知道如何處理活動名稱這樣

設置$ WifiDisplaySettingsActivity

能有人給我 建議??? PLZ ....非常感謝你太多了

的問題是它的settings.WIFI_DISPLAY_SETTINGS但不ACTION_WIFI_SETTINGS,所以日食不能編譯

addional:

public final class WifiDisplaySettings extends SettingsPreferenceFragment implements PersistentGroupInfoListener { 
private static final String TAG = "WifiDisplaySettings"; 

private static final int MENU_ID_SCAN = Menu.FIRST; 
private static final int MENU_ID_CREATE_GROUP = Menu.FIRST + 1; 
private static final int MENU_ID_REMOVE_GROUP = Menu.FIRST + 2; 

它設置偏愛片段......讓我怎麼打開它? ?

回答

0

使用此

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)); 
} 

這可能會幫助你

+0

???,我的意思是我只想啓動Android設置應用程序,但不能連接到WiFi。 – Devon

+0

我不知道你的意思。 – Devon

0

使用

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); 
    } 
+0

我試過了,但是沒有工作..它到達了Wi-Fi設置頁面,但沒有Wi-Display頁面 – Devon

+0

感謝男人......但問題是它的設置.WIFI_DISPLAY_SETTINGS 但不是ACTION_WIFI_SETTINGS,所以日食無法編譯 – Devon

1

startActivity(新意圖( 「android.settings.WIFI_DISPLAY_SETTINGS」) );

2

無線顯示設置活動可以通過意向"android.settings.WIFI_DISPLAY_SETTINGS". 一些OEM使用其他意圖

三星被稱爲:"com.samsung.wfd.LAUNCH_WFD_PICKER_DLG"

HTC:"com.htc.wifidisplay.CONFIGURE_MODE_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")); 
    } 
} 

請讓我知道它是否可以更好地實施。

+1

你是如何去發現這些非標準設置面板?我需要爲Xperia Z3找到miracast設置面板 –

+0

您在https://developer.android.com/reference/android/provider/Settings.htm中看不到這些Intent View Action Strings –

相關問題