1

私はアプリケーションを持っていて、それをリモートで起動しますbroadcast receiver。このメソッドを使用して、アプリドロワーから非表示にしました。

public static void hideFromAppDrawer(Context c) {
        ComponentName componentToDisable = new ComponentName(
                "mypackage", "mypackage.MyMainActivity");

        c.getPackageManager().setComponentEnabledSetting(componentToDisable,
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.DONT_KILL_APP);
    }

しかし、非表示にした後(laucherアクティビティを非表示にし、その後同じアクティビティをリモートで起動したい)、アプリケーションは起動しません。ログには次のように書かれています。

03-27 15:00:53.494: E/AndroidRuntime(23392): FATAL EXCEPTION: main
03-27 15:00:53.494: E/AndroidRuntime(23392): java.lang.RuntimeException: Unable to start receiver mypackage.receivers.myReceiver: android.content.ActivityNotFoundException: Unable to find explicit activity class {mypackage/mypackage.MyMainActivity}; have you declared this activity in your AndroidManifest.xml?
03-27 15:00:53.494: E/AndroidRuntime(23392):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2383)

broadcast receiver's onReceive()アクティビティを開始しようとしたときに、メソッドにエラーがあります。

context.startActivity(i);

03-27 15:00:53.494: E/AndroidRuntime(23392):    at ... .onReceive(MyReceiver.java:36)

何が問題である可能性があり、アプリケーションドロワーから非表示になっているときにアプリケーションを起動するにはどうすればよいですか?

4

1 に答える 1

5

何が問題なのか

コンポーネントを無効にしました。つまり、コンポーネントを起動できません。

アプリケーションドロワーから非表示になっているときにアプリケーションを起動するにはどうすればよいですか?

あなたはこれを試すことができます:

  • /<activity-alias>を含むアクティビティを指すマニフェストエントリを設定します(元のフィルターからそのフィルターを削除します)MAINLAUNCHER <intent-filter><activity>

  • 上記のJavaコードの使用を無効に<activity-alias>し、元のアクティビティをそのまま残します

  • BroadcastReceiverアクティビティを参照していることを確認してください。

私はこの特定のレシピを試していませんが、原則としてこれは機能するはずです。

于 2013-03-27T14:36:54.103 に答える