1

http://florent-dupont.blogspot.ro/2015/02/android-5-screen-pinning.htmlLauncihng固定アプリから「画面固定」の活動

から別のアクティビティ、あなたは、セカンダリアプリを起動することはできません。 AndroidManifest.xmlにあり、その2番目のアプリケーションは同じ証明書で とパッケージ化されています)。他のアプリケーションのアクティビティは に開始されず、(Context.startActivity()を使用して)開始され、単に が無視されます。

私は上記の2つのことを行っていますが、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#アフィ – kellogs

関連する問題