代码之家  ›  专栏  ›  技术社区  ›  LearningNeverEnds

无法启动接收器(未找到活动)

  •  0
  • LearningNeverEnds  · 技术社区  · 8 年前

    我开发了一个应用程序,并将其放在app store上。之后,我想更改包名,所以我只是在build中更改了应用程序ID。渐变,使其在链接中看起来合适。我没有更改任何其他内容,包括包名、清单文件等。应用程序工作正常,但现在显示错误为 ActivityNotFound异常 在通过广播接收器调用的启动器活动上,尽管该活动在清单文件中定义。我能知道我错在哪里吗?

    <receiver android:name=".PowerConnectionReceiver">
    <intent-filter>
    <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
    </intent-filter>
    </receiver>
    
    <activity
    android:name=".BatteryChargerFast"
    android:configChanges="orientation"
    android:screenOrientation="portrait"
    android:label="@string/app_name"
    android:launchMode="singleTask">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    

    下面是广播接收器的编码:

    public class PowerConnectionReceiver extends BroadcastReceiver {
    private String TAG="PowerConnectionReceiver";
    
    @Override
    public void onReceive(Context context, Intent intent) {
    Intent i = new Intent();
    i.setClassName("packagename", 
    "packagename.BatteryChargerFast");
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.putExtra("fast", true);
    context.startActivity(i);
    }
    }
    

    错误状态:

    包装名称。电源连接接收器: 安卓所容纳之物ActivityNotFoundException:无法找到显式 在您的AndroidManifest中声明了此活动。xml?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Sandip Fichadiya    8 年前

    在gradle中更改applicationId时,它会覆盖清单的id。

    Intent i = new Intent();
    i.setClassName("packagename", 
    "packagename.BatteryChargerFast");
    

    收件人:

    Intent i = new Intent();
        i.setClassName("your.new.app.id", 
        "packagename.BatteryChargerFast");
    

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent(context.getApplicationContext(), BatteryChargerFast.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        i.putExtra("fast", true);
        context.startActivity(i);
    }