2011-06-20 6 views
0

プログラム内からAndroidテザリング設定メニューを起動しようとしていますが、名前にスラッシュが付いた半隠れメニューの1つです(com.android.settings/.etherether)と私は私がそれを参照する必要があるか分からない。プログラムから非表示のAndroid設定アクティビティを起動する

Intent intent = new Intent(); 
intent.setClassName("com.android.settings", "com.android.settings/.tether.Tether"); 
startActivity(intent); 

私も、しかし、どちらの方法をsetClassNameライン

で「com.android.settingsを/」試してみた、それは見つけることができないと言う:これは私がこれまで試したものですクラス:

I/ActivityManager(51):最低活性:テント{行為= android.intent.action.MAIN CMP = com.android.settings/com.android.settings/.tether.Tether} D/AndroidRuntime(254):VMをシャットダウンする W/dalvikvm(254):threadid = 3:キャッチされていない例外でスレッドが終了する(グループ= 0x4001b18 8: E/AndroidRuntime(254):キャッチされていないハンドラ:キャッチされていない例外のためにメインスレッドが終了する E/AndroidRuntime(254):java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {com.zzzz.launcher/com.zzzz。 Launcher.Launcher}:> android.content.ActivityNotFoundException:明示的なアクティビティクラスを見つけることができません> {com.android.settings/com.android.settings/.tether.Tether};あなたのAndroidManifest.xmlでこのアクティビティを宣言しましたか?

私は私のマニフェストファイルにリストされている以下の活性を有する:

<activity android:name="com.android.settings/.tether.Tether" /> 

(そして、私はまたそこに、バックスラッシュでスラッシュをエスケープしようとしました)

にあります表示されません。関連付けられた設定。*値であれば、次のような通常の起動方法は機能しません。

startActivity(new Intent(Settings.ACTION_TETHER_SETTINGS)); 

...でも、私はまだクラス名で起動する方法を学びたいと思うでしょう。名前にスラッシュが付いた他のクラスがあります(たとえば、com.android.settings./proxySelectorなど)。同様の方法で立ち上げる。

乾杯、

ポール

(またスタックトレース:)

I/ActivityManager(59):最低活性:テント{行為= android.intent.action.MAIN猫= [アクティビティのcom.zzzz.launcherを開始します。 .launcher/.ProxySet:pid = 397 uid = 10040 gids = {1015} I/ActivityManager(59):開始アクションW/dalvikvm(397):threadid = 1:キャッチされていない例外(グループ= 0x4001d800)でスレッドが終了しています E/dalvikvm(397):threadid = 1:/AndroidRuntime(397):致命的な例外:メイン E/AndroidRuntime(397):java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {com.zzzz.launcher/com.zzzz.launcher.ProxySet}:android.content.ActivityNotFoundException :明示的なアクティビティクラス{com.android.settings/.ProxySelector}を見つけることができません。あなたのAndroidManifest.xmlでこのアクティビティを宣言しましたか?

答えて

2

com.android.settings/.tether.Tetherは2部です。最初の部分はスラッシュの前にパッケージ名です。 2番目はスラッシュの後にクラス名です。使用しているコンテキストでは、別々に指定する必要があります。

あなたのコードで複数の問題があります。

  1. intent.setClassName("com.android.settings", "com.android.settings/.tether.Tether");あなたがマニフェストに記載された活性を有していなければならないintent.setClassName("com.android.settings", ".tether.Tether");

  2. でなければなりませんが。あなたがクラスを実装している場合にのみ行うべきです。それはあなたがそれを自分で実装していると仮定したので、あなたのマニフェストにリストされているアクティビティを持っているかどうかを尋ねただけです。テザーのために

+0

[OK]を、おかげで設定。テザークラスは私のエミュレータには存在しないので、私はその行を以下のように変更しました。 intent.setClassName( "com.android.settings"、 ".ProxySelector"); ...確かに存在しますが(私はこれを「開始」と確認しました)、しかし、私はまだ同じActivityNotFoundExceptionを取得しています。何か案は? – paul88888

+0

stackTraceを投稿できますか?あなたの前の1つは "{com.android.settings/com.android.settings/.tether.Tether};"私には一番朗報でした。 –

+0

うん、上に掲示... – paul88888

6

正しいパッケージ/クラス名が "com.android.settings"、 "com.android.settings.TetherSettings" そのため

Intent tetherSettings = new Intent(); 
tetherSettings.setClassName("com.android.settings", "com.android.settings.TetherSettings"); 
startActivity(tetherSettings); 
+0

私のために働いた唯一のもの! – publicknowledge

関連する問題