2012-06-18 2 views
-1

안녕하세요 사람들은 지금 6 개월 동안 내 앱을 만들고 있습니다. 이 모든 시간과 코딩 등을 위해 제 레이아웃에 대한 작업을했습니다. 지난 달 iv에 데이터베이스를 만들려고했습니다. 그러나 나는이 문제를 해결할 수 없다. 안드로이드 메모장 튜토리얼을 마쳤으며 SQLite 데이터베이스 브라우저를 다운로드했습니다. 그리고 심지어 tho 난 메모장 v3에서 작업 데이터베이스 (& 데이터 추가) 그냥 내 프로젝트 에서이 데이터베이스 데모를 사용할 수 있는지 모르겠다.데이터베이스 데모를 사용할 수 있습니까

또한 스택 오버플로 페이지 (지금 찾을 수 없습니다.)에 누군가가 다운로드 한 데이터베이스 데모 zip 파일에 대한 링크를 넣었습니다. 그것의 바로 뒤에 무엇이. 여러분이 저를 도울 수 있기를 바랍니다. 내 데이터베이스로 데모를 사용할 수 있다면 알려주세요.

제 자신의 데이터베이스를 만들거나 학습하기 쉬운 방법을 찾지 마십시오. 그것에 대해.

안드로이드 세계에서 배울 점이 많습니다. 그리고 만약 내가 다른 프로젝트에서 내가 코딩에 대해 길을 따라 배울 것입니다 작업 DB를 가지고 ... 여기에 데이터베이스 데모의 Java 코드입니다 조금 무거운 모든 붙여 이렇게 무거운 보고 싶다면 내 XML은 말 해주세요 ..

 package mina.android.DatabaseDemo; 
     import android.app.Activity; 
     import android.app.Dialog; 
     import android.database.Cursor; 
     import android.os.Bundle; 
     import android.text.Spannable; 
     import android.view.View; 
     import android.widget.AdapterView; 
     import android.widget.EditText; 
     import android.widget.SimpleCursorAdapter; 
     import android.widget.Spinner; 
     import android.widget.TextView; 
     import android.widget.AdapterView.OnItemSelectedListener; 

     public class AddEmployee extends Activity { 
     EditText txtName; 
     EditText txtAge; 
     TextView txtEmps; 
     DatabaseHelper dbHelper; 
     Spinner spinDept; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.addemployee); 
     txtName=(EditText)findViewById(R.id.txtName); 
     txtAge=(EditText)findViewById(R.id.txtAge); 
     txtEmps=(TextView)findViewById(R.id.txtEmps); 
     spinDept=(Spinner)findViewById(R.id.spinDept); 
     } 

    @Override 
    public void onStart() 
    { 
    try 
    { 
    super.onStart(); 
    dbHelper=new DatabaseHelper(this); 



     txtEmps.setText(txtEmps.getText()+String.valueOf(dbHelper.getEmployeeCount())); 

    Cursor c=dbHelper.getAllDepts(); 
    startManagingCursor(c); 



    //SimpleCursorAdapter ca=new 

     SimpleCursorAdapter(this,android.R.layout.simple_spinner_item, c, new String [] 

     {DatabaseHelper.colDeptName}, new int []{android.R.id.text1}); 
    SimpleCursorAdapter ca=new 

     SimpleCursorAdapter(this,R.layout.deptspinnerrow, c, new String [] 


     {DatabaseHelper.colDeptName,"_id"}, new int []{R.id.txtDeptName}); 



     //ca.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    spinDept.setAdapter(ca); 
    spinDept.setOnItemSelectedListener(new OnItemSelectedListener() { 

     public void onItemSelected(AdapterView<?> parent, View 
        selectedView, 
       int position, long id) { 
      // TODO Auto-generated method stub 

     } 

     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 


    //never close cursor 
    } 
    catch(Exception ex) 
    { 
     CatchError(ex.toString()); 
    } 
    } 

    public void btnAddEmp_Click(View view) 
    { 
    boolean ok=true; 
    try 
    { 
     Spannable spn=txtAge.getText(); 
     String name=txtName.getText().toString(); 
     int age=Integer.valueOf(spn.toString()); 
     int deptID=Integer.valueOf((int)spinDept.getSelectedItemId()); 
     Employee emp=new Employee(name,age,deptID); 

     dbHelper.AddEmployee(emp); 

    } 
    catch(Exception ex) 
    { 
     ok=false; 
     CatchError(ex.toString()); 
    } 
    finally 
    { 
     if(ok) 
     { 
      //NotifyEmpAdded(); 
      Alerts.ShowEmpAddedAlert(this); 
      txtEmps.setText("Number of employees 

         "+String.valueOf(dbHelper.getEmployeeCount())); 
     } 
     } 
    } 

     void CatchError(String Exception) 
    { 
    Dialog diag=new Dialog(this); 
    diag.setTitle("Add new Employee"); 
    TextView txt=new TextView(this); 
    txt.setText(Exception); 
    diag.setContentView(txt); 
    diag.show(); 
    } 

    void NotifyEmpAdded() 
    { 
    Dialog diag=new Dialog(this); 
    diag.setTitle("Add new Employee"); 
    TextView txt=new TextView(this); 
    txt.setText("Employee Added Successfully"); 
    diag.setContentView(txt); 
    diag.show(); 
    try { 
     diag.wait(1000); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     CatchError(e.toString()); 
    } 
    diag.notify(); 
    diag.dismiss(); 
    } 

     } 

    package mina.android.DatabaseDemo; 


    import android.app.AlertDialog; 
    import android.app.Dialog; 
    import android.content.Context; 
    import android.content.DialogInterface; 
    import android.content.DialogInterface.OnClickListener; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.widget.Spinner; 
    import android.widget.TextView; 

    public class Alerts { 
    public static void ShowEmpAddedAlert(Context con) 
    { 
    AlertDialog.Builder builder=new AlertDialog.Builder(con); 
    builder.setTitle("Add new Employee"); 
    builder.setIcon(android.R.drawable.ic_dialog_info); 
    DialogListner listner=new DialogListner(); 
    builder.setMessage("Employee Added successfully"); 
    builder.setPositiveButton("ok", listner); 

    AlertDialog diag=builder.create(); 
    diag.show(); 
     } 




    public static AlertDialog ShowEditDialog(final Context con,final Employee emp) 
    { 
    AlertDialog.Builder b=new AlertDialog.Builder(con); 
    b.setTitle("Employee Details"); 
    LayoutInflater li=LayoutInflater.from(con); 
    View v=li.inflate(R.layout.editdialog, null); 

    b.setIcon(android.R.drawable.ic_input_get); 

    b.setView(v); 
    final TextView txtName=(TextView)v.findViewById(R.id.txtDelName); 
    final TextView txtAge=(TextView)v.findViewById(R.id.txtDelAge); 
    final Spinner spin=(Spinner)v.findViewById(R.id.spinDiagDept); 
    Utilities.ManageDeptSpinner(con, spin); 
    for(int i=0;i<spin.getCount();i++) 
    { 
    long id=spin.getItemIdAtPosition(i); 
    if(id==emp.getDept()) 
    { 
     spin.setSelection(i, true); 
     break; 
     } 
     } 


    txtName.setText(emp.getName()); 
    txtAge.setText(String.valueOf(emp.getAge())); 

    b.setPositiveButton("Modify", new OnClickListener() { 

    public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub 
     emp.setName(txtName.getText().toString()); 
     emp.setAge(Integer.valueOf(txtAge.getText().toString())); 


     emp.setDept((int)spin.getItemIdAtPosition(spin.getSelectedItemPosition())); 



     try 
     { 
     DatabaseHelper db=new DatabaseHelper(con); 
     db.UpdateEmp(emp); 

     } 
     catch(Exception ex) 
     { 
      CatchError(con, ex.toString()); 
     } 
     } 
     }); 

     b.setNeutralButton("Delete", new OnClickListener() { 

    public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub 
     DatabaseHelper db=new DatabaseHelper(con); 
     db.DeleteEmp(emp); 
     } 
    }); 
    b.setNegativeButton("Cancel", null); 

     return b.create(); 
     //diag.show(); 

      } 

     static public void CatchError(Context con, String Exception) 
     { 
    Dialog diag=new Dialog(con); 
    diag.setTitle("Error"); 
    TextView txt=new TextView(con); 
    txt.setText(Exception); 
    diag.setContentView(txt); 
    diag.show(); 
      } 
      } 


     package mina.android.DatabaseDemo 

     import android.app.TabActivity; 
     import android.content.Intent; 
     import android.os.Bundle; 
     import android.view.Menu; 
     import android.view.MenuItem; 
     import android.widget.GridView; 
     import android.widget.TabHost; 
     import android.widget.TextView; 

     public class DatabaseDemo extends TabActivity { 
    DatabaseHelper dbHelper; 
    GridView grid; 
    TextView txtTest; 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     SetupTabs(); 

     } 





     @Override 
     public boolean onCreateOptionsMenu(Menu menu) 
     { 
     menu.add(1, 1, 1, "Add Employee"); 
     return true; 
     } 







     public boolean onOptionsItemSelected(MenuItem item) 
     { 
     switch (item.getItemId()) 
     { 
     //Add employee 
     case 1: 
     Intent addIntent=new Intent(this,AddEmployee.class); 
     startActivity(addIntent); 
     break; 
     } 
     super.onOptionsItemSelected(item); 
     return false; 
     } 

     void SetupTabs() 
     { 

     TabHost host=getTabHost(); 

     TabHost.TabSpec spec=host.newTabSpec("tag1"); 
     Intent in1=new Intent(this, AddEmployee.class); 
     spec.setIndicator("Add Employee"); 
     spec.setContent(in1); 

     TabHost.TabSpec spec2=host.newTabSpec("tag2"); 
     Intent in2=new Intent(this, GridList.class); 

     spec2.setIndicator("Employees"); 
     spec2.setContent(in2); 
     host.addTab(spec); 
     host.addTab(spec2); 
     } 
     } 

     package mina.android.DatabaseDemo; 

     import android.content.ContentValues; 
     import android.content.Context; 
     import android.database.Cursor; 
     import android.database.sqlite.SQLiteDatabase; 
     import android.database.sqlite.SQLiteOpenHelper; 

     public class DatabaseHelper extends SQLiteOpenHelper { 

    static final String dbName="demoDB"; 
    static final String employeeTable="Employees"; 
    static final String colID="EmployeeID"; 
    static final String colName="EmployeeName"; 
    static final String colAge="Age"; 
    static final String colDept="Dept"; 

    static final String deptTable="Dept"; 
    static final String colDeptID="DeptID"; 
    static final String colDeptName="DeptName"; 

    static final String viewEmps="ViewEmps"; 


    public DatabaseHelper(Context context) { 
    super(context, dbName, null,33); 

    // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 

    db.execSQL("CREATE TABLE "+deptTable+" ("+colDeptID+ " INTEGER PRIMARY KEY 
      , "+ 
      colDeptName+ " TEXT)"); 

    db.execSQL("CREATE TABLE "+employeeTable+" ("+colID+" INTEGER PRIMARY KEY 
      AUTOINCREMENT, "+ 
      colName+" TEXT, "+colAge+" Integer, "+colDept+" INTEGER 

     NOT NULL ,FOREIGN KEY ("+colDept+") REFERENCES "+deptTable+" 
     ("+colDeptID+"));"); 


    db.execSQL("CREATE TRIGGER fk_empdept_deptid " + 
      " BEFORE INSERT "+ 
      " ON "+employeeTable+ 

      " FOR EACH ROW BEGIN"+ 
      " SELECT CASE WHEN ((SELECT "+colDeptID+" FROM 

      "+deptTable+" WHERE "+colDeptID+"=new."+colDept+") IS NULL)"+ 
      " THEN RAISE (ABORT,'Foreign Key Violation') END;"+ 
      " END;"); 

    db.execSQL("CREATE VIEW "+viewEmps+ 
      " AS SELECT "+employeeTable+"."+colID+" AS _id,"+ 
      " "+employeeTable+"."+colName+","+ 
      " "+employeeTable+"."+colAge+","+ 
      " "+deptTable+"."+colDeptName+""+ 
      " FROM "+employeeTable+" JOIN "+deptTable+ 
      " ON "+employeeTable+"."+colDept+" 

     ="+deptTable+"."+colDeptID 
      ); 
    //Inserts pre-defined departments 
    InsertDepts(db); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 

    db.execSQL("DROP TABLE IF EXISTS "+employeeTable); 
    db.execSQL("DROP TABLE IF EXISTS "+deptTable); 

    db.execSQL("DROP TRIGGER IF EXISTS dept_id_trigger"); 
    db.execSQL("DROP TRIGGER IF EXISTS dept_id_trigger22"); 
    db.execSQL("DROP TRIGGER IF EXISTS fk_empdept_deptid"); 
    db.execSQL("DROP VIEW IF EXISTS "+viewEmps); 
    onCreate(db); 
    } 

    void AddEmployee(Employee emp) 
    { 


    SQLiteDatabase db= this.getWritableDatabase(); 


    ContentValues cv=new ContentValues(); 

    cv.put(colName, emp.getName()); 
    cv.put(colAge, emp.getAge()); 
    cv.put(colDept, emp.getDept()); 
    //cv.put(colDept,2); 

    db.insert(employeeTable, colName, cv); 
    db.close(); 


    } 

    int getEmployeeCount() 
    { 
    SQLiteDatabase db=this.getWritableDatabase(); 
    Cursor cur= db.rawQuery("Select * from "+employeeTable, null); 
    int x= cur.getCount(); 
    cur.close(); 
    return x; 
    } 

    Cursor getAllEmployees() 
    { 
    SQLiteDatabase db=this.getWritableDatabase(); 



    //Cursor cur= db.rawQuery("Select "+colID+" as _id , "+colName+", 

     "+colAge+" from "+employeeTable, new String [] {}); 
    Cursor cur= db.rawQuery("SELECT * FROM "+viewEmps,null); 
    return cur; 

    } 

    Cursor getAllDepts() 
    { 
    SQLiteDatabase db=this.getReadableDatabase(); 
    Cursor cur=db.rawQuery("SELECT "+colDeptID+" as _id, "+colDeptName+" from 

     "+deptTable,new String [] {}); 

    return cur; 
    } 

     void InsertDepts(SQLiteDatabase db) 
    { 
    ContentValues cv=new ContentValues(); 
     cv.put(colDeptID, 1); 
     cv.put(colDeptName, "Sales"); 
     db.insert(deptTable, colDeptID, cv); 
     cv.put(colDeptID, 2); 
     cv.put(colDeptName, "IT"); 
     db.insert(deptTable, colDeptID, cv); 
     cv.put(colDeptID, 3); 
     cv.put(colDeptName, "HR"); 
     db.insert(deptTable, colDeptID, cv); 
     db.insert(deptTable, colDeptID, cv); 

     } 

     public String GetDept(int ID) 
    { 
    SQLiteDatabase db=this.getReadableDatabase(); 

    String[] params=new String[]{String.valueOf(ID)}; 
    Cursor c=db.rawQuery("SELECT "+colDeptName+" FROM"+ deptTable+" WHERE 

     "+colDeptID+"=?",params); 
    c.moveToFirst(); 
    int index= c.getColumnIndex(colDeptName); 
    return c.getString(index); 
    } 

    public Cursor getEmpByDept(String Dept) 
    { 
    SQLiteDatabase db=this.getReadableDatabase(); 
    String [] columns=new String[]{"_id",colName,colAge,colDeptName}; 
    Cursor c=db.query(viewEmps, columns, colDeptName+"=?", new String[] 

     {Dept}, null, null, null); 
    return c; 
    } 

    public int GetDeptID(String Dept) 
    { 
    SQLiteDatabase db=this.getReadableDatabase(); 
    Cursor c=db.query(deptTable, new String[]{colDeptID+" as 

      _id",colDeptName},colDeptName+"=?", new String[]{Dept}, null, null, null); 
    //Cursor c=db.rawQuery("SELECT "+colDeptID+" as _id FROM "+deptTable+" 

      WHERE "+colDeptName+"=?", new String []{Dept}); 
    c.moveToFirst(); 
    return c.getInt(c.getColumnIndex("_id")); 

    } 

    public int UpdateEmp(Employee emp) 
    { 
    SQLiteDatabase db=this.getWritableDatabase(); 
    ContentValues cv=new ContentValues(); 
    cv.put(colName, emp.getName()); 
    cv.put(colAge, emp.getAge()); 
    cv.put(colDept, emp.getDept()); 
    return db.update(employeeTable, cv, colID+"=?", new String 

      []{String.valueOf(emp.getID())}); 

    } 

    public void DeleteEmp(Employee emp) 
    { 
    SQLiteDatabase db=this.getWritableDatabase(); 
    db.delete(employeeTable,colID+"=?", new String []  

      {String.valueOf(emp.getID())}); 
    db.close(); 
      } 
      } 

     package mina.android.DatabaseDemo; 

     import android.content.DialogInterface; 

     public class DialogListner implements 
     android.content.DialogInterface.OnClickListener { 


public DialogListner() 
{ 

} 

public void onClick(DialogInterface dialog, int which) { 
    // TODO Auto-generated method stub 

} 

    } 


     package mina.android.DatabaseDemo; 

    import android.content.Context; 

    public class Employee { 

int _id; 
String _name; 
int _age; 
int _dept; 

public Employee(String Name,int Age,int Dept) 
{ 

    this._name=Name; 
    this._age=Age; 
    this._dept=Dept; 
} 

public Employee(String Name,int Age) 
{ 
    this._name=Name; 
    this._age=Age; 
} 

public int getID() 
{ 
    return this._id; 
} 
public void SetID(int ID) 
{ 
    this._id=ID; 
} 

public String getName() 
{ 
    return this._name; 
} 

public int getAge() 
{ 
    return this._age; 
} 

public void setName(String Name) 
{ 
    this._name=Name; 
} 
public void setAge(int Age) 
{ 
    this._age=Age; 
} 



public void setDept(int Dept) 
{ 
    this._dept=Dept; 
} 

public String getDeptName(Context con, int Dept) 
{ 
    return new DatabaseHelper(con).GetDept(Dept); 
} 
public int getDept() 
{ 
    return this._dept; 
} 
    } 


     package mina.android.DatabaseDemo; 

     import android.app.Activity; 
    import android.app.AlertDialog; 
    import android.content.DialogInterface; 
    import android.content.DialogInterface.OnDismissListener; 
    import android.database.Cursor; 
    import android.database.sqlite.SQLiteCursor; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.AdapterView; 
    import android.widget.GridView; 
    import android.widget.SimpleCursorAdapter; 
    import android.widget.Spinner; 
    import android.widget.TextView; 
    import android.widget.AdapterView.OnItemClickListener; 
    import android.widget.AdapterView.OnItemSelectedListener; 

    public class GridList extends Activity { 
DatabaseHelper dbHelper; 
static public GridView grid; 
TextView txtTest; 
Spinner spinDept1; 
/** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.gridview); 
    grid=(GridView)findViewById(R.id.grid); 
    txtTest=(TextView)findViewById(R.id.txtTest); 
    spinDept1=(Spinner)findViewById(R.id.spinDept1); 

    Utilities.ManageDeptSpinner(this.getParent(),spinDept1); 
    final DatabaseHelper db=new DatabaseHelper(this); 
    try 
    { 

http://img856.imageshack.us/img856/446/hoop.png

 spinDept1.setOnItemSelectedListener(new OnItemSelectedListener() { 

     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 
      LoadGrid(); 
      //sca.notifyDataSetChanged(); 

     } 

     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 

     } 
     catch(Exception ex) 
     { 
     txtTest.setText(ex.toString()); 
     } 



     try 
     { 
     grid.setOnItemClickListener(new OnItemClickListener() 
     { 

     public void onItemClick(AdapterView<?> parent, View v, int position, 
       long id) { 
      // TODO Auto-generated method stub 
      try 
      { 

      SQLiteCursor 
      cr=(SQLiteCursor)parent.getItemAtPosition(position); 
      String 
      name=cr.getString(cr.getColumnIndex(DatabaseHelper.colName)); 
      int 
       age=cr.getInt(cr.getColumnIndex(DatabaseHelper.colAge)); 
      String 
       Dept=cr.getString(cr.getColumnIndex(DatabaseHelper.colDeptName)); 
      Employee emp=new Employee(name, age,db.GetDeptID(Dept)); 
      emp.SetID((int)id); 
      AlertDialog diag= Alerts.ShowEditDialog(GridList.this,emp); 
      diag.setOnDismissListener(new OnDismissListener() { 

       public void onDismiss(DialogInterface dialog) { 
        // TODO Auto-generated method stub 
        txtTest.setText("dismissed"); 

      //((SimpleCursorAdapter)grid.getAdapter()).notifyDataSetChanged(); 
        LoadGrid(); 
       } 
      }); 
      diag.show(); 
      } 
      catch(Exception ex) 
      { 
       Alerts.CatchError(GridList.this, ex.toString()); 
      } 
     } 


     } 
     ); 
     } 
     catch(Exception ex) 
     { 

     } 

     } 

      @Override 
      public void onStart() 
     { 
     super.onStart(); 
     //LoadGrid(); 
      } 

      public void LoadGrid() 
      { 
     dbHelper=new DatabaseHelper(this); 
     try 
     { 
     //Cursor c=dbHelper.getAllEmployees(); 
     View v=spinDept1.getSelectedView(); 
     TextView txt=(TextView)v.findViewById(R.id.txtDeptName); 
     String Dept=String.valueOf(txt.getText()); 
     Cursor c=dbHelper.getEmpByDept(Dept); 
     startManagingCursor(c); 

     String [] from=new String 
      []{DatabaseHelper.colName,DatabaseHelper.colAge,DatabaseHelper.colDeptName}; 
     int [] to=new int [] {R.id.colName,R.id.colAge,R.id.colDept}; 
     SimpleCursorAdapter sca=new 
      SimpleCursorAdapter(this,R.layout.gridrow,c,from,to); 
     grid.setAdapter(sca); 



     } 
     catch(Exception ex) 
     { 
     AlertDialog.Builder b=new AlertDialog.Builder(this); 
     b.setMessage(ex.toString()); 
     b.show(); 
     } 
      } 

      } 

     package mina.android.DatabaseDemo; 


     import android.content.Context; 
     import android.database.Cursor; 
     import android.widget.SimpleCursorAdapter; 
     import android.widget.Spinner; 

     public class Utilities { 
     static public void ManageDeptSpinner(Context context,Spinner view) 
     { 
    DatabaseHelper dbHelper=new DatabaseHelper(context); 
    Cursor c=dbHelper.getAllDepts(); 
    //context.startManagingCursor(c); 



    //SimpleCursorAdapter ca=new 
     SimpleCursorAdapter(this,android.R.layout.simple_spinner_item, c, new String [] 
     {DatabaseHelper.colDeptName}, new int []{android.R.id.text1}); 
    SimpleCursorAdapter ca=new 
    SimpleCursorAdapter(context,R.layout.deptspinnerrow,c, 
     new String [] {DatabaseHelper.colDeptName,"_id"}, new int []{R.id.txtDeptName}); 
    view.setAdapter(ca); 

     } 
     } 
+1

** "이 데이터베이스 데모를 제 자신으로 사용할 수 있는지 알려주십시오."** 그 질문은 내가 여기있는 사람이 데모. 다운로드 한 사이트로 돌아가서 라이센스 제한이 있는지 확인하거나 zip 파일에서'licence.txt '또는 유사한 것을 확인해야합니다. 실패하면 저자에게 허가를 요청하십시오. – Squonk

+0

머리를 가져 주셔서 감사합니다. 내가 다시 사이트를 찾을 수 있었으면 좋겠다 – Kenn

답변

0

대부분의 안드로이드 데모를 Notepad의 현재 버전을 포함하여 Apache License v2.0를 사용합니다. 이 라이센스는 코드를 자유롭게 사용하고 재배포 할 수 있지만 기존의 모든 통지 및 속성을 보존하고 코드를 수정했음을 분명히 표시해야합니다. (문단 4의 정확한 문구를 참조하십시오.)

+0

당신의 대답에 감사드립니다. – Kenn

관련 문제