2017-09-12 2 views
0

Ich habe eine Anwendung entwickelt und diese auf App Store gestellt. Danach wollte ich den Paketnamen ändern, also habe ich nur die Anwendungs-ID in build.gradle geändert, so dass es in Link passend aussieht. Ich änderte nichts anderes nicht den Paketnamen, nicht die Manifestdatei usw. Die Anwendung funktionierte gut, aber jetzt zeigt es einen Fehler ActivityNotFound Ausnahme auf die Launcher-Aktivität, die über einen Broadcast-Empfänger aufgerufen wird, obwohl diese Aktivität in Manifest definiert ist Datei. Darf ich wissen, wo ich falsch liege? Dies ist die Manifest-Datei-Codierung:Receiver kann nicht gestartet werden (Aktivität nicht gefunden)

<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> 

Und unten ist die Codierung von Broadcast-Empfänger:

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); 
} 
} 

die Fehlerzustände:

java.lang.RuntimeException: Kann nicht starten Empfänger Paketname.PowerConnectionReceiver: android.content.ActivityNotFoundException: Konnte nicht explizit finden ac tivity-Klasse {Paketname/Paketname.BatteryChargerFast}; hast du diese Aktivität in deiner AndroidManifest.xml deklariert?

+0

Denn wenn Wenn Sie ApplicationId in Gradle ändern, wird die ID des Manifests überschrieben. Ich bin mir nicht sicher, aber Sie sollten Folgendes versuchen, um zu sehen, ob es funktioniert : i.setClassName ("YourNewApplicationId", "packagename.BatteryChargerFast"); oder : i.setClassName ("YourNewApplicationId", "YourNewApplicationId.BatteryChargerFast"); –

+0

@ sam_0829 Okay, lass mich auf diese Weise bearbeiten – LearningNeverEnds

Antwort

0

Wenn Sie ApplicationId in Gradle ändern, überschreibt es die ID des Manifests. so müssen Sie aus dem Code ändern:

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

An:

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

oder sogar einfacher sein, wo Sie brauchen, um all dies nicht zu berücksichtigen:

@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); 
} 
+0

PERFEKT! Vielen Dank, es hat funktioniert :) – LearningNeverEnds

Verwandte Themen