key*_*bee 1 android launch hide
我有一个应用程序,我用一个远程启动它broadcast receiver.我使用这种方法将其隐藏在app抽屉中:
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);
}
Run Code Online (Sandbox Code Playgroud)
但是在隐藏之后,(我隐藏了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)
Run Code Online (Sandbox Code Playgroud)
broadcast receiver's onReceive()当我尝试启动活动时,错误在于方法:
context.startActivity(i);
03-27 15:00:53.494: E/AndroidRuntime(23392): at ... .onReceive(MyReceiver.java:36)
Run Code Online (Sandbox Code Playgroud)
可能是什么问题,如何在应用程序抽屉中隐藏应用程序时启动它?
可能是什么问题呢
您禁用了该组件,这意味着它无法启动.
如何在应用程序抽屉中隐藏应用程序时启动我的应用程序?
你可以试试这个:
设置一个<activity-alias>指向您的活动的清单条目,其中包含您的MAIN/ LAUNCHER <intent-filter>(从原始文件中删除该过滤器<activity>)
禁用<activity-alias>使用上述Java代码,保持原始活动不变
确保您BroadcastReceiver引用活动,因为它应该已经存在
原则上,这应该工作,虽然我没有尝试过这个特定的配方.