2013-10-01 22 views

答えて

5

、プログラムアイコンが表示されるようにしたいです。

PackageManager p = getPackageManager(); 
ComponentName componentName = new ComponentName("com.example.removeicon","com.example.removeicon.LauncherActivity"); 
p.setComponentEnabledSetting(componentName , PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 

次回再起動するまでアイコンが表示されない場合があります。コードの下に使用して

+0

私は既にそのコードを使用してアプリアイコンを隠していましたが、私はそのアプリアイコンが表示されたいと考えています – PankajAndroid

+1

私の更新された回答を見てください。 –

+0

更新された回答を参考にしてください。 –

77

を隠すアプリのアイコン:ここ

PackageManager p = getPackageManager(); 
ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); // activity which is first time open in manifiest file which is declare as <category android:name="android.intent.category.LAUNCHER" /> 
p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

は、アプリのアイコンを戻す方法です。

PackageManager p = getPackageManager(); 
ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); 
p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

とアイコンを再表示するには:

PackageManager p = getPackageManager(); 
ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); 
p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 

重要: あなたが主な活動で何かをする必要がある場合には何とかトリッキーだこれを使用するアイコンを非表示にするに

PackageManager p = getPackageManager(); 
ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); 
p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 
+2

こんにちは、あなたのコードは完璧に動作していますが、する。アイコンを隠した後、ユーザーが#007のような特定の番号を呼び出した場合、このアプリを起動したいと思います。私は発信レシーバーを実装し、番号で一致している私は私の主な活動を開始しようとしているが、それは私にActivityNotFoundExceptionを与えている。あなたが何か考えてもらえれば助けてくれますか? – Scorpion

+0

@Scorpionはいあなたの権利はあなたの活動を破壊し、その活動にアクセスすることはできません。そのためには別の方法を使用する必要があります。 – CoronaPintu

+0

どうすればいいのですか?私は原因があります:java.lang.NullPointerException私のコードのstartActivity行に – Scorpion

9

あなたのアプリは隠されているとき。あなたはActivityNotFoundExceptionに直面します。それを機能させるには、あなたの主なアクティビティーに何かをする前にアイコンの表示を解除し、完了後に再び非表示にする必要があります。
簡単な手順: 1-コールはここで受信
2 - 再表示アイコン
3-打ち上げ主な活動はこちらから
主な活動にあなたの事を4-行う
5非表示アイコン再び

3

ダウンロードソースコード(Hide and Unhide the app icon in android programmatically

MainActivity.java:

package com.deepshikha.hideappicon; 

import android.Manifest; 
import android.app.ProgressDialog; 
import android.content.ComponentName; 
import android.content.DialogInterface; 
import android.content.pm.PackageManager; 
import android.os.Handler; 
import android.support.v4.app.ActivityCompat; 
import android.support.v4.content.ContextCompat; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    Button btn_hide; 
    private static final ComponentName LAUNCHER_COMPONENT_NAME = new ComponentName(
      "com.deepshikha.hideappicon", "com.deepshikha.hideappicon.Launcher"); 

    public static int REQUEST_PERMISSIONS = 1; 
    boolean boolean_permission; 
    ProgressDialog progressDialog; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     init(); 
     fn_permission(); 
     listener(); 
    } 

    private void init() { 
     btn_hide = (Button) findViewById(R.id.btn_hide); 
     progressDialog = new ProgressDialog(MainActivity.this); 
     progressDialog.setTitle("Alert"); 
     progressDialog.setMessage("Please wait"); 


     if (isLauncherIconVisible()) { 
      btn_hide.setText("Hide"); 
     } else { 
      btn_hide.setText("Unhide"); 
     } 


    } 

    private void listener() { 
     btn_hide.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.btn_hide: 

       progressDialog.show(); 
       new Handler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         progressDialog.dismiss(); 
         if (isLauncherIconVisible()) { 
          btn_hide.setText("Hide"); 
         } else { 
          btn_hide.setText("Unhide"); 
         } 
        } 
       }, 10000); 


       if (boolean_permission) { 

        if (isLauncherIconVisible()) { 
         fn_hideicon(); 
        } else { 
         fn_unhide(); 
        } 
       } else { 
        Toast.makeText(getApplicationContext(), "Please allow the permission", Toast.LENGTH_LONG).show(); 
       } 
       break; 

     } 

    } 

    private boolean isLauncherIconVisible() { 
     int enabledSetting = getPackageManager().getComponentEnabledSetting(LAUNCHER_COMPONENT_NAME); 
     return enabledSetting != PackageManager.COMPONENT_ENABLED_STATE_DISABLED; 
    } 

    private void fn_hideicon() { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Important!"); 
     builder.setMessage("To launch the app again, dial phone number 1234567890"); 
     builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       getPackageManager().setComponentEnabledSetting(LAUNCHER_COMPONENT_NAME, 
         PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
         PackageManager.DONT_KILL_APP); 
      } 
     }); 
     builder.setIcon(android.R.drawable.ic_dialog_alert); 
     builder.show(); 
    } 

    private void fn_unhide() { 
     PackageManager p = getPackageManager(); 
     ComponentName componentName = new ComponentName(this, com.deepshikha.hideappicon.MainActivity.class); 
     p.setComponentEnabledSetting(LAUNCHER_COMPONENT_NAME, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 
    } 

    private void fn_permission() { 
     if ((ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.PROCESS_OUTGOING_CALLS) != PackageManager.PERMISSION_GRANTED) || 
       (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.PROCESS_OUTGOING_CALLS) != PackageManager.PERMISSION_GRANTED)) { 

      if ((ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, android.Manifest.permission.PROCESS_OUTGOING_CALLS))) { 
      } else { 
       ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.PROCESS_OUTGOING_CALLS}, 
         REQUEST_PERMISSIONS); 

      } 

      if ((ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.PROCESS_OUTGOING_CALLS))) { 
      } else { 
       ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.PROCESS_OUTGOING_CALLS}, 
         REQUEST_PERMISSIONS); 

      } 
     } else { 
      boolean_permission = true; 


     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     if (requestCode == REQUEST_PERMISSIONS) { 

      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       boolean_permission = true; 


      } else { 
       Toast.makeText(getApplicationContext(), "Please allow the permission", Toast.LENGTH_LONG).show(); 

      } 
     } 
    } 
} 

LaunchAppReceiver.java:

package com.deepshikha.hideappicon; 

import android.content.BroadcastReceiver; 
import android.content.ComponentName; 
import android.content.Context; 
import android.content.Intent; 
import android.content.pm.PackageManager; 

/** 
* Created by deepshikha on 9/6/17. 
*/ 

public class LaunchAppReceiver extends BroadcastReceiver { 
    String LAUNCHER_NUMBER = "1234567890"; 
    private static final ComponentName LAUNCHER_COMPONENT_NAME = new ComponentName(
      "com.deepshikha.hideappicon", "com.deepshikha.hideappicon.Launcher"); 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     String phoneNubmer = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     if (LAUNCHER_NUMBER.equals(phoneNubmer)) { 
      setResultData(null); 

      if (isLauncherIconVisible(context)) { 

      } else { 
       Intent appIntent = new Intent(context, MainActivity.class); 
       appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       context.startActivity(appIntent); 
      } 


     } 

    } 

    private boolean isLauncherIconVisible(Context context) { 
     int enabledSetting = context.getPackageManager().getComponentEnabledSetting(LAUNCHER_COMPONENT_NAME); 
     return enabledSetting != PackageManager.COMPONENT_ENABLED_STATE_DISABLED; 
    } 

} 

ありがとう!

関連する問題