Как вызвать одно приложение из другого в android

Я делаю одно приложение для этого, мне нужно вызвать "com.android.settings.DeviceAdminAdd" из моего приложения. как вызвать этот класс в моем приложении. Мой код такой, но он не работает

Intent intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.DeviceAdminAdd");
startActivity(intent);

спасибо заранее

8 ответов

Вместо использования setClassName используйте setComponent, как setComponent ниже

Intent intentDeviceTest = new Intent("android.intent.action.MAIN"); 
intentDeviceTest.setComponent(new ComponentName("com.intent.service",
 "com.intent.service.InentServiceDemoActivity"));
startActivity(intentDeviceTest);


Задайте свойство activityAdminAdd activity exported = true в файле манифеста. и звоните следующим образом:

Intent intent = new Intent(com.android.settings.this, com.android.settings.DeviceAdminAdd.class);
startActivity(intent);


Пытаться...

Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
startActivity(intent);

Из документов...

DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN


Я пробовал этот код сейчас, и он работает, он открывает AddAccount Activity:

Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT);
 startActivity(intent);

С уважением, Houcine


Все ответы верны. Тем не менее, вы НИКОГДА не нацеливаете приложение на имя пакета UNLESS, это ваше приложение. Это вызовет проблемы с будущими версиями, если вы будете следовать этому шаблону.


Пожалуйста, попробуйте это,

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address");
startActivity( LaunchIntent );


Попробуйте это вместо этого (обратите внимание, что 1-я строка отличается):

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.android.settings", "com.android.settings.DeviceAdminAdd");
startActivity(intent);

Если он по какой-то причине не работает, другой (лучший) вариант заключается в использовании PackageManager для получения намерения для пакета:

PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.android.settings");
startActivity(intent);


вы можете прочитать этот код

public class CurrentActivity extends Activity {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 Intent intent=new Intent(this,TargetActivityName.class); 
 this.startActivity(intent);

 }
}

licensed under cc by-sa 3.0 with attribution.