12

私はAndroidアプリケーションをやっています。エミュレーターでアプリケーション アイコンを非表示にし、456# などの数字を押してアプリケーションを起動したいと考えています。これを行う方法はありますか?

4

5 に答える 5

19

プログラムでランチャーからアプリのアイコンを非表示にするには、これを行うことができます

    PackageManager packageManager = context.getPackageManager();
    ComponentName componentName = new ComponentName(context,
            LauncherActivity.class);
    packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
            PackageManager.DONT_KILL_APP);

番号を押してアプリを起動するには、最初に mainfest ファイルに次の権限を追加します

     <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>

次に、受信者を登録します

<receiver android:name=".LaunchAppViaDialReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
    </intent-filter> 
</receiver>

次に、レシーバー クラスを作成します。

  public class LaunchAppViaDialReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Bundle bundle = intent.getExtras();
    if (null == bundle)
        return;
    String phoneNubmer = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
             //here change the number to your desired number
    if (phoneNubmer.equals("12345")) {
        setResultData(null);
        Gaurdian.changeStealthMode(context,
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
        Intent appIntent = new Intent(context, LauncherActivity.class);
        appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(appIntent);
    }

}
于 2012-07-25T04:20:19.987 に答える
5

質問の最初の部分に対する答えは、次のコードを試してください。

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

アプリケーションは表示されませんが、ユーザーは [設定] >> [アプリケーション] >> [アプリケーションの管理] で見つけることができます

この回答も役立つ場合があります。

機能を既に達成している場合は、ここに回答を投稿することを忘れないでください(いくつかの番号を押してアプリケーションを開きます)。

于 2011-12-16T18:23:05.457 に答える
4

解決策に注意してください。

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

アプリが手動でアンインストールされていない限り (これはユーザーフレンドリーな動作ではありません)、このコンポーネントを無効にした後に OS がパッケージを見つけられず、再インストールできないため、Google Play からアプリをアップグレードできなくなります。

于 2013-11-24T13:09:13.463 に答える
3
public class MainActivity extends Activity {

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

        hideapplication();
}


   private void hideapplication() {
// TODO Auto-generated method stub
     PackageManager pm = getApplicationContext().getPackageManager();
   pm.setComponentEnabledSetting(getComponentName(),                           PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}

}
于 2014-04-09T10:43:00.557 に答える