1

http://florent-dupont.blogspot.ro/2015/02/android-5-screen-pinning.htmlLauncihng 고정 된 앱에서는 '화면 고정'활동

에서 다른 활동, 당신은 보조 응용 프로그램을 시작할 수 없습니다 AndroidManifest.xml에서 두 번째 애플리케이션은 동일한 인증서로 으로 패키징됩니다. 다른 응용 프로그램의 활동은 에 시작될 수 없으므로 Context.startActivity()를 사용하여 간단히 을 무시합니다.

위의 두 가지를 수행했지만 startActivity()은 여전히 ​​무시되고 있습니다. https://developer.android.com/reference/android/R.attr.html#lockTaskMode에서

:

이 활동이 시작됩니다 루트로 새 작업은 그 작업을하거나 활동의 패키지가 있었는지에 를 따라 시작되지 않을 때 시스템이 lockTask 모드에 이미있는 경우 화이트리스트.

나는이 작업을 위해 필요한 조치를 취한 것처럼 보입니다.

누구도이 작업을 수행 한 사람이 있습니까?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ButterKnife.bind(this); 

    ComponentName deviceAdmin = new ComponentName(this, AdminReceiver.class); 
    mDpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 

    if (!mDpm.isAdminActive(deviceAdmin)) { 
     Toast.makeText(this, getString(R.string.not_device_admin), Toast.LENGTH_SHORT).show(); 
    } 

    if (mDpm.isDeviceOwnerApp(getPackageName())) 
    { 
     mDpm.setLockTaskPackages(deviceAdmin, new String[]{getPackageName(), "com.that.other.package"}); 

     try 
     { 

      enableKioskMode(true); 

      PackageManager pm = this.getPackageManager(); 
      Intent it = pm.getLaunchIntentForPackage("com.that.other.package"); 

      if (null != it) { 
       this.startActivity(it); 
       Log.d(_TAG, "Started activity for com.that.other.package"); 
      } 
     } 

     catch (Exception e) 
     { 
      Log.e(_TAG, e.getMessage()); 
      finish(); 
     } 


    } else { 

     Toast.makeText(this, getString(R.string.not_device_owner), Toast.LENGTH_SHORT).show(); 
    } 

} 

private void enableKioskMode(boolean enabled) throws Exception 
{ 
    if (enabled) 
    { 
     if (mDpm.isLockTaskPermitted(this.getPackageName())) 
     { 
      startLockTask(); 
      mIsKioskEnabled = true; 
      mButton.setText(getString(R.string.exit_kiosk_mode)); 

     } else { 

      Toast.makeText(this, getString(R.string.kiosk_not_permitted), Toast.LENGTH_SHORT).show(); 
     } 

    } else { 

     stopLockTask(); 
     mIsKioskEnabled = false; 
     mButton.setText(getString(R.string.enter_kiosk_mode)); 
    } 
} 

답변

0

밖으로 나가는 android:taskAffinity 태그가 없습니다. 두 패키지의 동일한 문자열을 가리키면 startActivity()이 작동하기 시작해야합니다.

+0

동일한 문제가 있습니다. 샘플 코드를 보여줄 수 있습니까? – Meir

+0

@Meir 샘플 코드는 질문에 있습니다. 'taskAffinity'가 문서를 체크 아웃하는 것은 어렵지 않습니다. https://developer.android.com/guide/topics/manifest/activity-element.html# 매니페스트의 ''태그에 넣으십시오. aff – kellogs