Код: Выделить всё
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class MainActivity extends AppCompatActivity {
public static Boolean weather =false;
public static Boolean kiosk =false;
private Launcher launchObj = new Launcher();
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize the TextView
textView = findViewById(R.id.textView);
//checkRunTimePermission();
//new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
weather=true;
//launchWeather();
launchObj.makeRepeatTask();
}
}
< /code>
и ниже - еще один класс, в котором я пытался реализовать ретранслятор, который может запускать два приложения после некоторого периода времени. < /p>
public class Launcher extends AppCompatActivity {
public Launcher(){}
public void makeRepeatTask() {
Runnable task = () -> {
Timer timer = new Timer();
timer.schedule(new UpdateTimeTask(), 1, 10000);
};
}
class UpdateTimeTask extends TimerTask {
public void run()
{
if (MainActivity.weather){
//Toast.makeText(Launcher.this, "weather .......", Toast.LENGTH_SHORT).show();
System.out.println("-----On TICK------");
launchWeather();
}
if (MainActivity.kiosk) {
//Toast.makeText(Launcher.this, "kiosk .......", Toast.LENGTH_SHORT).show();
launchKiosk();
}
}
}
public void launchKiosk() {
new CountDownTimer(5000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
NumberFormat f = new DecimalFormat("00");
long hour = (millisUntilFinished / 3600000) % 24;
long min = (millisUntilFinished / 60000) % 60;
long sec = (millisUntilFinished / 1000) % 60;
System.out.println(f.format(hour) + ":" + f.format(min) + ":" + f.format(sec));
}
@Override
public void onFinish() {
startNewActivity( Launcher.this, "com.fullykiosk.videokiosk");
MainActivity.kiosk=true;
MainActivity.weather=false;
}
}.start();
}
public void launchWeather() {
new CountDownTimer(5000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
NumberFormat f = new DecimalFormat("00");
long hour = (millisUntilFinished / 3600000) % 24;
long min = (millisUntilFinished / 60000) % 60;
long sec = (millisUntilFinished / 1000) % 60;
System.out.println(f.format(hour) + ":" + f.format(min) + ":" + f.format(sec));
}
@Override
public void onFinish() {
startNewActivity( Launcher.this, "com.apalon.weatherlive.free");
MainActivity.weather=true;
MainActivity.kiosk=false;
}
}.start();
}
public void startNewActivity(Context context, String packageName) {
Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
if (intent == null) {
intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + packageName));
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
runOnUiThread(new Runnable() {
public void run() {
final Toast toast = Toast.makeText(Launcher.this, "App not Found", Toast.LENGTH_SHORT);
toast.show();
}
});
}
}
< /code>
I have declared queries in manifest for packages i want to open too.
< /code>
`Now , i must say that a package can be launched ok from MainActivity but when i want to launh/switch them repeatedly by makeRepeatTask() the code give me errors about NullPointerException context and looper.prepare relation errors.
Please , help is needed. Thank you.`
Подробнее здесь: https://stackoverflow.com/questions/796 ... on-android