Programování pro android je zdlouhavé a nebezpečné.
Neodkazuješ se na službu.
Odzkoušený kód comrade.
Telefon se sám probudí (pokud je to třeba) :
Nejdřív uděláš odvozenou třídu od BroadcastReceiver (v samostatném souboru MyBroadcastReceiver.java přídáš do projektu )
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "myapp:app_name");
wl.acquire();
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:577019465"));
if (ActivityCompat.checkSelfPermission(context,
Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
return;
}
context.startActivity(callIntent);
wl.release();
}
}
Následně například po kliknutí na tlačítko v MainActivity vykonáš tenhle kód:
Intent intent = new Intent(this, MyBroadcastReceiver.class); // Tady se odkazujeme na službu "MyBroadcastReceiver"
intent.setClass(this, MyBroadcastReceiver.class);
AlarmManager alarmMgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
int millis = 1; // za jaký čas v minutách volat
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.MINUTE, mills);
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent);
Toast.makeText(this, "Volání proběhne za: " + mills + " minut" , Toast.LENGTH_LONG).show();
Vloženy mám tyto manifesty:
<uses-permission android:name="android.permission.PARTIAL_WAKE_LOCK" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE" />