일정 시간이 지나면 화면이 유휴 상태 일 때 활동을 시작해야한다는 요구 사항이 있습니다. 가장 좋은 방법은 Intent.SCREEN_OFF 인 텐트를 찾아 무시하는 사용자 지정 broadcastReceiver를 만드는 것입니다.배경 서비스에서 Android 활동 시작
이 사용자 정의 broadcastReceiver 안에는 활동이 시작됩니다. 처음 화면이 꺼지면 작동하지만 앱을 제거하고 다시 설치할 때까지는 다시 작동하지 않습니다.
android.content.ActivityNotFoundException: Unable to find explicit activity class {/}; have you declared this activity in your AndroidManifest.xml?
예,이 오히려 명백한 질문에 대답하려면 :
나는 다음과 같은 오류를 받고 있어요. 나는 가지고있다.
<activity
android:name="gold.KioskPlayer"
android:configChanges="orientation|keyboardHidden"
android:enabled="true"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
<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>
다른 활동 벌금에서 작동합니다. 또한, Manifest가 잘못 되었다면 완전히 멈추지 않을 것입니다.
토드 (Todd)가 제안한 것처럼 "오류로 인해 어떤 액티비티가 호출 될 예정인지 추적 할 수없는 것처럼 들립니다." 이것이 어떻게 가능한지? 그게 버그 야?
BroadcastReceiver screenoff = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("ScreenSaver", "ScreenSaver1 - ScreenOff");
//Log.d("Power Lock Pressed", "Power Button Off Pressed:" + intent.getAction());
if(!setup.screensaverShown || !setup.canSleep)
{
releaseWakeLock();
try {
setup.wl = setup.pm.newWakeLock(
PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP,
"ScreenSaver");
setup.wl.acquire();
Thread.sleep(100);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try{
KioskPlayer.setup.screensaver=true;
Log.d("ScreenSaver", "ScreenSaver1 starting...");
Intent i = new Intent(getBaseContext(), KioskPlayer.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(i);
}catch(Exception e)
{
Log.d("ScreenSaver", "ScreenSaver1 " + e.toString());
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
BroadcastReceiver screenon = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(setup.canSleep)
{
setup.canSleep=false;
}
}
};
public void releaseWakeLock(){
try {
if (setup.wl != null && setup.wl.isHeld())
{
setup.wl.release();
setup.wl = null;
}
}catch(Exception e){}
}
내가 다른 활동 미세에서 활동을 호출 할 수 있습니다
그래서, 여기에 브로드 캐스트 리시버 코드입니다. 나는 심지어이 오류 메시지를 받기 전에 한 번 그리고 한 번만이 서비스에서이 코드를 호출 할 수 있습니다.
도움을 주시면 대단히 감사하겠습니다.
그리고 Manifest.xml에서 활동을 선언하셨습니까? – DroidBender
엄청나게. 나는 잘 작동하는 다른 Activity에서 Activity를 호출하고 있습니다. 처음 화면이 꺼지면 잘 작동합니다. 그 후에, 그것은 단지 오류를 제공합니다. – Nico
오류는 어떤 식 으로든 Activity가 호출되어야하는 트랙을 잃는 것처럼 들리게 만듭니다. 비록 당신이 당신의 매니 페스트에서 그것을 선언했다는 것을 의심하지는 않지만, 아마도 그것과 관련하여 약간의 오류가있을 때를 대비하여, 그것을 게시하는 데 어느 정도 가치가있을 것입니다. –