2012-03-20 12 views
3

NFC認証で動作するアンドロイドロック解除画面アプリを開発する方法を理解しようとしているので、今は長い時間が経ちました。私はNexus Sと協力しています。 インターネットでいくつかの調査を行った結果、ロック画面をサードパーティのアプリケーションとして置き換えることは今サポートされておらず、まともな実装を行うためにプラットフォームを変更する必要があるという結論に至りました。Android搭載アプリのデフォルトランチャーにユーザーをリダイレクトする方法は?

これが私がロック解除画面アプリの幻影を与えるホームスクリーンアプリを開発した理由です。しかし、私の問題は、手順の最後にデフォルトのlaucherにリダイレクトしたいということです。

私が最初に以下のコードを試みたが、問題は、私は、デフォルトのホーム画面の間で選択することができますし、私の新しいアプリ

Intent goHome = new Intent(); 
i.setAction("android.intent.action.MAIN"); 
i.addCategory("android.intent.category.HOME"); 
startActivity(goHome); 

は、だから私は、私は以下のコードを試みたが、それはdoesnのことですうまくいくようです。

Intent goHome = new Intent(Intent.ACTION_MAIN); 
goHome.setClassName("com.android.launcher", "com.android.launcher.Launcher"); 
startActivity(goHome); 

私はあなたはそれが動作しない理由を任意のアイデアを持っていますか、次のlogCat

明示的なアクティビティクラスを見つけることができません

(com.android.launcher.laucher)

を取得?それは正しい方法ですか?

答えて

2

はこの試してください:あなたはサムスンのデバイスを持っている場合は

goHome.setClassName("com.android.launcher", "com.android.launcher2.Launcher"); 
+0

コードの – Aerrow

+0

@ethan_liou im get error 05-11 10:38:26.300:E/AndroidRuntime(6728):致命的な例外:メイン AndroidRuntime(6728):プロセス:com.example.lockapplication、PID:6728 05-11 10:38:26.300:E/AndroidRuntime(6728):android.content.ActivityNotFoundException:明示的なアクティビティクラス{com.android.launcher/com.android.launcher2.Launcher}を見つけることができません。あなたのAndroidManifest.xmlでこのアクティビティを宣言しましたか? – Erum

0

を、次のコードは、私の仕事:

Intent goHome = new Intent(Intent.ACTION_MAIN); 
     goHome.setClassName("com.sec.android.app.launcher", "com.android.launcher2.Launcher"); 
     startActivity(goHome); 
6

用途:私はこの作品を追加する場所で

PackageManager pm = getPackageManager(); 
    Intent i = new Intent("android.intent.action.MAIN"); 
    i.addCategory("android.intent.category.HOME"); 
    List<ResolveInfo> lst = pm.queryIntentActivities(i, 0); 
    if (lst != null) { 
     for (ResolveInfo resolveInfo : lst) { 
      try { 
      Intent home = new Intent("android.intent.action.MAIN"); 
      home.addCategory("android.intent.category.HOME"); 
      home.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name); 
      startActivity(home); 
      break; 
      } catch (Throwable t) { 
       t.printStackTrace(); 
      } 
     } 
    } 
+0

私はなぜこれがupvotedされていないのか分かりませんが、これは私のために働く唯一の解決策です。あなたへの誇り@ user1135940! – Bruce

関連する問題