2011-05-13 3 views
0

내부 클래스로서 활동을 보호, 그리고 순간 다른안드로이드 난 단지 내 응용 프로그램에서 다른 특정하는 행동이에서 시작할 수 있습니다 활동을 할

에서,이 작품 :

public abstract class Launcher extends Activity { 

protected static boolean flag = true; 

protected abstract void Launch(); 

public static class myPrivateActivity extends Activity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if(flag) 
      finish(); 
     setContentView(R.layout.main); 


    } 

} 

} 

public class SpecialActivity extends Launcher { 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.newlayout); 
} 

@Override 
protected void Launch { 

    flag = false; 

    Intent i = new Intent(Intent.ACTION_VIEW); 
    String name = myPrivateActivity.class.getName(); 
    i.setClassName(this, name); 
    startActivity(i); 

    //finish(); 

} 

} 

<activity android:name=".Launcher$myPrivateActivity" 
android:label="Private?"> 

그러나 안드로이드 매니페스트에, 나는 알고 싶습니다 다시 플래그를 사용하는 것보다 나은 솔루션입니까?

답변

1

. 나는 전에 그런 것을 본 적이 없다고 생각합니다.

그러나 나는 그것이 성취하려는 것을 성취했다고 생각하지 않습니다. 이와 같은 접근 방식을 취한 경우 추상 기본 클래스와 내부 정적 클래스 패키지를 비공개로 설정하고 임의의 구체적인 public 하위 클래스를 최종화하여 추가로 "강화"하는 것이 좋습니다. 이러한 변화로, 나는 깃발이 더 이상 어떠한 종류의 보호도 제공하지 않을 것이라고 생각합니다.

그러나 Android의 권한 모델은 사용자 정의 권한을 제공하며 사용자가 원하는 것을 달성하는 데 사용될 수 있습니다. 실제로 http://developer.android.com/guide/topics/security/security.html의 문서는 "자신의 사용 권한을 시행하여" "사용 권한 중 하나를 시작할 수있는 사람을 제어하려는 응용 프로그램"을 구성하는 방법을 설명합니다.

목표에 더 가까워 지나요?

1

나는 당신이 사용할 수 있다고 생각 :

안드로이드 : 허가

클라이언트가 활동을 시작하거나 그렇지 않다면 인 텐트에 응답하기 얻기 위해 가져야하는 퍼미션의 이름. startActivity() 또는 startActivityForResult()의 호출자에게 지정된 권한이 부여되지 않은 경우 해당 인 텐트는 해당 활동으로 전달되지 않습니다. 이 속성을 설정하지 않으면 요소의 permission 속성으로 설정된 권한이 활동에 적용됩니다. 두 속성이 설정되지 않은 경우, 활동은 권한에 의해 보호되지 않습니다. 창조적으로 착수의

http://developer.android.com/guide/topics/manifest/activity-element.html#prmsn

관련 문제