2017-09-12 6 views
0

저는 응용 프로그램을 개발하여 응용 프로그램 저장소에 저장했습니다. Afterwords 나는 단지 링크를 적절하게 보이도록 build.gradle에서 응용 프로그램 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); 
} 
} 

오류 상태 :

java.lang.RuntimeException가 : 시작할 수 없습니다 수신기 packagename.PowerConnectionReceiver : android.content.ActivityNotFoundException : 명시 적으로 찾을 수 없습니다 ac tivity 클래스 {packagename/packagename.BatteryChargerFast}; 당신의 AndroidManifest.xml에서이 활동을 신고 해 주시겠습니까?

+0

을 applicationId를 gradle로 변경하면 Manifest의 id가 재정의됩니다. 확실하지는 않지만 다음을 시도해보십시오. : i.setClassName ("YourNewApplicationId", "packagename.BatteryChargerFast"); 또는 : i.setClassName ("YourNewApplicationId", "YourNewApplicationId.BatteryChargerFast"); –

+0

@ sam_0829 괜찮습니다.이 방법으로 수정 해주세요 – LearningNeverEnds

답변

0

gradle에서 applicationId를 변경하면 Manifest의 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); 
} 
+0

완료! 고마워요. – LearningNeverEnds