首页 > 解决方案 > 在清单文件中注册接收器后安装应用程序时出错

问题描述

我正在开发一个安全应用程序,我需要检查在尝试解锁锁定屏幕时失败了多少次。每当我将接收器代码粘贴到清单文件中时,就会出现问题。我尝试了多种解决方案,但无法使任何解决方案发挥作用。我正在使用的代码是:

错误:

INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

显现:

    ****<receiver
        android:name=".AdminReceiver"
        android:permission="android.permission.BIND_DEVICE_ADMIN">
        <meta-data
            android:name="android.app.device_admin"
          />
        <intent-filter>
            <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
            <action android:name="android.app.action.ACTION_PASSWORD_CHANGED"/>
            <action android:name="android.app.action.ACTION_PASSWORD_FAILED"/>
            <action android:name="android.app.action.ACTION_PASSWORD_SUCCEEDED"/>
        </intent-filter>
    </receiver>****

管理员接收者:

public class AdminReceiver extends DeviceAdminReceiver {
@Override
public void onEnabled(Context ctxt, Intent intent) {
    ComponentName cn=new ComponentName(ctxt, AdminReceiver.class);
    DevicePolicyManager mgr=
            (DevicePolicyManager)ctxt.getSystemService(Context.DEVICE_POLICY_SERVICE);

    mgr.setPasswordQuality(cn,
            DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);

    onPasswordChanged(ctxt, intent);
}

@Override
public void onPasswordChanged(Context ctxt, Intent intent) {
    DevicePolicyManager mgr=
            (DevicePolicyManager)ctxt.getSystemService(Context.DEVICE_POLICY_SERVICE);
    int msgId;

    assert mgr != null;
    if (mgr.isActivePasswordSufficient()) {
        msgId=R.string.compliant;
    }
    else {
        msgId=R.string.not_compliant;
    }

    Toast.makeText(ctxt, msgId, Toast.LENGTH_LONG).show();
}

@Override
public void onPasswordFailed(Context ctxt, Intent intent) {
    Toast.makeText(ctxt, R.string.password_failed, Toast.LENGTH_LONG)
            .show();
}

@Override
public void onPasswordSucceeded(Context ctxt, Intent intent) {
    Toast.makeText(ctxt, R.string.password_success, Toast.LENGTH_LONG)
            .show();
}

}

标签: androidandroid-intentandroid-manifest

解决方案


我遇到了这个错误,因为我的包名中有这样的大写字母。

Com.Droider.packagename;

在我将其更改为以下内容后:

com.droider.packagename;

在您的情况下,尝试将其更改为:

work.work;

编辑 1:

也可能是这个原因。

android:name="MainActivity"

将此更改为。

android:name=".MainActivity"

推荐阅读