首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >COSU:在pin之后找不到活动,然后重新启动

COSU:在pin之后找不到活动,然后重新启动
EN

Stack Overflow用户
提问于 2017-03-17 17:48:33
回答 1查看 438关注 0票数 0

我正在开发一个应用程序,可以是屏幕钉,又名公司拥有的单一用途,也就是锁定任务模式。

如果我把它钉起来然后:

  • 我关闭它(杀死它),然后我再次启动它
  • 或者在android中修改了一些代码,然后执行运行。
  • 在引脚后重新启动和取消引脚

我得到以下错误:

代码语言:javascript
复制
[homtom-ht3_pro-0123456789ABCDEF]: E/AndroidRuntime: FATAL EXCEPTION: main
                                                     Process: com.xx.yyy, PID: 7928
                                                     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xx.yyy/com.xx.yyy.activities.LauncherActivity}: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.xx.yyy/com.xx.yy.activities.StartActivity}; have you declared this activity in your AndroidManifest.xml?
                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2534)
                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2614)
                                                         at android.app.ActivityThread.access$800(ActivityThread.java:178)
                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
                                                         at android.os.Handler.dispatchMessage(Handler.java:111)
                                                         at android.os.Looper.loop(Looper.java:194)
                                                         at android.app.ActivityThread.main(ActivityThread.java:5643)
                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                         at java.lang.reflect.Method.invoke(Method.java:372)
                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
                                                      Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.xx.yyy/com.xx.yyy.activities.StartActivity}; have you declared this activity in your AndroidManifest.xml?
                                                         at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1788)
                                                         at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512)
                                                         at android.app.Activity.startActivityForResult(Activity.java:3809)
                                                         at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50)
                                                         at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79)
                                                         at android.app.Activity.startActivityForResult(Activity.java:3760)
                                                         at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859)
                                                         at android.app.Activity.startActivity(Activity.java:4090)
                                                         at android.app.Activity.startActivity(Activity.java:4058)
                                                         at com.xx.yyy.activities.LauncherActivity.onCreate(LauncherActivity.java:16)
                                                         at android.app.Activity.performCreate(Activity.java:6099)
                                                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2481)
                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2614) 
                                                         at android.app.ActivityThread.access$800(ActivityThread.java:178) 
                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470) 
                                                         at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                         at android.os.Looper.loop(Looper.java:194) 
                                                         at android.app.ActivityThread.main(ActivityThread.java:5643) 
                                                         at java.lang.reflect.Method.invoke(Native Method) 
                                                         at java.lang.reflect.Method.invoke(Method.java:372) 
                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 
                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

这是我的宣言:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xx.yyy">



    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <receiver
            android:name=".receivers.DeviceAdminReceiver"
            android:description="@string/app_name"
            android:label="@string/app_name"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/device_admin_receiver" />

            <intent-filter>
                <action android:name="android.intent.action.DEVICE_ADMIN_ENABLED" />
                <action android:name="android.intent.action.PROFILE_PROVISIONING_COMPLETE" />
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

        <activity android:name=".activities.LauncherActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".activities.StartActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

    </application>

</manifest>

如果我从来没有钉这个应用程序,我可以重新启动/升级,并多次运行它,我想。

好的是,这甚至是不可能卸载应用程序,因为它已配置为设备所有者,因此,它不能卸载,除非工厂重置。

我不明白在重新启动应用程序后,我的活动怎么可能消失。可能是与intent category or action相关的

如果其他人遇到这种行为,我会告诉我,我会向bug报告站点提交一个问题。

谢谢。

编辑18/3

我认为这可能是因为在某种程度上,我杀死了home category activity --在我的例子中,它就是缺少的StartActivity,即使我重新启动应用程序,它也不会重新启动。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-18 03:08:48

在我的COSU禁用固定实现中找到了解决方案,我做的是:

代码语言:javascript
复制
PackageManager mPackageManager = getApplicationContext().getPackageManager();;
mPackageManager.setComponentEnabledSetting(
        new ComponentName(getApplicationContext(), StartActivity.class),
        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
        PackageManager.DONT_KILL_APP);

若要禁用设备引导上的钉扎,但这实际上禁用了指定的组件。

正确的执行办法是:

代码语言:javascript
复制
PackageManager mPackageManager = getApplicationContext().getPackageManager();;
mPackageManager.setComponentEnabledSetting(
        new ComponentName(getApplicationContext(), StartActivity.class),
        PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
        PackageManager.DONT_KILL_APP);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42864091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档