2013-09-27 3 views
0

Требование к проекту выполняется следующим образом. У приложения есть только задача запустить фоновый сервис и синхронизировать данные с сервером или загрузить некоторую информацию на сервер. Может быть, есть и некоторые уведомления. Поэтому я хочу сделать это приложение невидимым программным путем из развертывания. Кто-нибудь подскажет, пожалуйста, поделитесь со мной. Возможно, это будет показано в диспетчере приложений, но не должно быть на главном экране.Как сделать значок приложения скрытым с главного экрана

package com.example.drawpicdemo; 

импорт java.util.ArrayList; import java.util.List;

импорт android.app.ActionBar.LayoutParams; импорт android.app.Activity; импорт android.content.pm.PackageManager; импорт android.graphics.Color; import android.os.Bundle; импорт android.view.Menu; импорт android.view.MenuItem; импорт android.view.MotionEvent; импорт android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; импорт android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; импорт android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; импорт android.widget.RelativeLayout; импорт android.widget.Spinner;

общественный класс MainActivity расширяет активность реализует OnClickListener {

Button red, green, blue, yellow, black; 
int color = Color.RED; 
DrawPictureView view; 
public int StdStrokeWidth = 5; 
Button EraseBtn, AddTextbtn; 
Spinner sizespinner; 
RelativeLayout parentlaLayout; 
int dx, dy; 

String textValue = ""; 
int lefttext = 0; 
int toptext = 0; 
int righttext = 0; 
int bootomtext = 0; 


public MainActivity() { 
    // TODO Auto-generated constructor stub 
    System.out.println("1111111111"); 
    System.out.println("1111111111"); 
    System.out.println("1111111111"); 
    System.out.println("1111111111"); 
} 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    text = new EditText(MainActivity.this.getApplicationContext()); 


    System.out.println("1111111111"); 

    System.out.println("1111111111"); 
    //To hide the app icon 
    PackageManager p = getPackageManager(); 
    p.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 
    System.out.println("1111111111"); 


    parentlaLayout = (RelativeLayout)findViewById(R.id.parentview); 

    EraseBtn = (Button)findViewById(R.id.erase); 
    AddTextbtn = (Button)findViewById(R.id.addtext); 

    EraseBtn.setOnClickListener(this); 
    AddTextbtn.setOnClickListener(this); 

    red = (Button) findViewById(R.id.red); 
    green = (Button)findViewById(R.id.green); 
    blue = (Button)findViewById(R.id.blue); 
    yellow = (Button)findViewById(R.id.yellow); 
    black = (Button)findViewById(R.id.black); 

    red.setBackgroundColor(Color.RED); 
    green.setBackgroundColor(Color.GREEN); 
    blue.setBackgroundColor(Color.BLUE); 
    yellow.setBackgroundColor(Color.YELLOW); 
    black.setBackgroundColor(Color.BLACK); 

    red.setOnClickListener(this); 
    green.setOnClickListener(this); 
    blue.setOnClickListener(this); 
    yellow.setOnClickListener(this); 
    black.setOnClickListener(this); 

    view = new DrawPictureView(MainActivity.this.getApplicationContext()); 
    view.setDrawColor(color); 
    RelativeLayout parentView = (RelativeLayout)findViewById(R.id.drawview); 
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 

    parentView.addView(view, lp); 

    sizespinner = (Spinner)findViewById(R.id.sizespinner); 
    addItemsOnSpinner2(); 

    sizespinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 

       sizespinner.getSelectedItem(); 
       StdStrokeWidth = Integer.parseInt((String)sizespinner.getSelectedItem()); 
       view.setStrokeWidth(StdStrokeWidth); 
       //sizespinner.setVisibility(View.INVISIBLE); 
       shouldClose = true; 

     } 

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

     } 
    }); 

    text.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 
       final int X = (int) event.getRawX(); 
       final int Y = (int) event.getRawY(); 

       switch (event.getAction() & MotionEvent.ACTION_MASK) { 
        case MotionEvent.ACTION_DOWN: 

         RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) text.getLayoutParams(); 
         dx = X - lParams.leftMargin; 
         dy = Y - lParams.topMargin; 
         break; 

        case MotionEvent.ACTION_MOVE: 

         RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) text.getLayoutParams(); 
         layoutParams.leftMargin = X - dx; 
         layoutParams.topMargin = Y - dy; 
         layoutParams.rightMargin = -250; 
         layoutParams.bottomMargin = -250; 
         text.setLayoutParams(layoutParams); 

         lefttext = layoutParams.leftMargin; 
         toptext = layoutParams.topMargin; 
         righttext = layoutParams.rightMargin; 
         bootomtext = layoutParams.bottomMargin; 

         textValue = text.getText().toString(); 

         break; 
       } 
      return false; 
     } 
    }); 

    text.setFocusable(true); 

    RelativeLayout.LayoutParams lptext = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
    parentlaLayout.addView(text, lptext); 
    text.setVisibility(View.INVISIBLE); 


} 

boolean shouldClose = false; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 
    // TODO Auto-generated method stub 
    switch (item.getItemId()) { 
     case R.id.action_settings: 
      shouldClose = false; 
       addItemsOnSpinner2(); 
      break; 

      default: 
      break; 
     } 
     return super.onMenuItemSelected(featureId, item); 
     } 

     // add items into spinner dynamically 
     public void addItemsOnSpinner2() { 
     List<String> list = new ArrayList<String>(); 

     for (int i = 8; i < 48; i++) { 
      list.add(Integer.toString(i)); 
     } 

     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, list); 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     sizespinner.setAdapter(dataAdapter); 
     sizespinner.setVisibility(View.VISIBLE); 
    } 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.red: 
     color = Color.RED; 
     view.setDrawColor(color); 
     view.setStrokeWidth(StdStrokeWidth); 
     break; 
    case R.id.blue: 
     color = Color.BLUE; 
     view.setDrawColor(color); 
     view.setStrokeWidth(StdStrokeWidth); 
     break; 

    case R.id.green: 
     color = Color.GREEN; 
     view.setDrawColor(color); 
     view.setStrokeWidth(StdStrokeWidth); 
     break; 

    case R.id.yellow: 
     color = Color.YELLOW; 
     view.setDrawColor(color); 
     view.setStrokeWidth(StdStrokeWidth); 
     break; 

    case R.id.black: 
     color = Color.BLACK; 
     view.setDrawColor(color); 
     view.setStrokeWidth(StdStrokeWidth); 
     break; 
    case R.id.erase: 
     color = Color.WHITE; 
     view.setDrawColor(color); 
     view.setStrokeWidth(StdStrokeWidth + 50); 
     break; 
    case R.id.addtext: 

     if(AddTextbtn.getText().toString().equals("Add text")) 
     { 
      text.setVisibility(View.VISIBLE); 
      text.setHint("Add text here"); 
      AddTextbtn.setText("Done"); 
     }else 
     { 
      text.setVisibility(View.INVISIBLE); 
      AddTextbtn.setText("Add text"); 

      int []pos = new int[]{lefttext, toptext, righttext, bootomtext}; 
      view.setTextPosition(pos, textValue); 
     } 

     break; 
    default: 
     break; 
    } 
} 

EditText text ; 

}

+0

у вас есть, чтобы скрыть значок приложения .. если убрать категорию намерения фильтр из файла манифеста то он не будет отображаться на главном экране – PankajAndroid

+0

@AndroidDev Будет работать приложение в этом случае. как фоновые службы, будет ли он вызван? –

+0

вставьте свой манифест и макет. –

ответ

1

Помещенный ниже код для того же, значок Launcher не будет виден.

PackageManager p = getPackageManager(); 
     p.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

Включите код в свой домашний экран на основе метода WithCreate().

+0

Я удалил фильтр намерений и написал этот код при запуске. Да значок удаляется, но похоже, что функция не работает, даже я попытался напечатать некоторую консоль s.o.p.l. но не отображается в консоли. –

+0

Вы начали свое обслуживание должным образом ?? Пожалуйста, разместите свой код здесь. и принять ответ, чтобы другие находили это полезным. –

+0

Нет, для демонстрации я не создавал никаких сервисов, а только активность и записывал некоторые системные журналы, но ничего не отображается в консоли. –

0

Снимите следующие строки из MainActivity в файл манифеста ,,

<category android:name="android.intent.category.LAUNCHER" /> 
0

Вы можете попробовать что-то это:

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <service 
      android:name=".AidlService" 
      android:process=":remote" > 
      <intent-filter> 
       <action android:name="com.remote.service.SERVER" /> 
      </intent-filter> 
     </service> 
    </application> 
Смежные вопросы