2

アプリから Android4.2 設定の WifiDisplaySettingsActivity を開きたいです。

私は試した

        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ではないため、Eclipseはコンパイルできません

追加:

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;

それはSetting Preference Fragmentです...どうやって開くのですか???

4

4 に答える 4

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

より良い実装が可能かどうか教えてください。

于 2014-03-01T10:12:24.963 に答える
1

startActivity(new Intent("android.settings.WIFI_DISPLAY_SETTINGS"));

于 2013-12-16T07:36:41.653 に答える
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);
    }
于 2013-08-06T10:37:12.197 に答える