Androidアプリのインストール後、デスクトップにアイコンを表示しないアプリケーションシーンの例と実現方法


最近会社のために車のインターネット接続の製品を作っていますが、会社自体は自動車デコーダの研究開発に優れていますので、この製品の診断機能の実現は現在のオンライン乗車の製品の中で多く使われているOBD協議を使う以外に、特別な診断機能を実現するために専用車を使っています.会社の考えはこれらの専用車の診断を有料サービスとしてユーザーに提供することです.つまり、ユーザーは無料でOBD契約に基づく診断機能を使う以外に、専用車専用協議で実現する特殊機能を使うなら、各機能のいくらの形でお金を払う必要があります.
私は主にこの車のインターネット製品の中のAndroid APPの開発を担当しています.前に述べたこの製品の需要を実現するために、各車の特殊機能診断プログラムを一つ一つのサブルーチン、つまり一つ一つのサブAPKにしたいです.各車種に対応する同じ特殊機能の診断プログラムは自動車契約によって違っています.全部のプログラムが一つのAPPに入れると、必ずAPPが大きすぎて、後期もメンテナンスが難しいです.②これらの特殊な機能を提供する目的は、専門的な自動車修理者と車両改装オタク(以下、「専門ユーザー」という)のニーズに合わせて、多くの一般ユーザーが利用しない可能性が高いので、必要なユーザーがダウンロードしやすい.
ユーザーがサブAPKをインストールした後、ユーザーのデスクトップがすべて各種のアイコン(本人はデスクトップが乱れているのが嫌です)にならないように、体験があまりにも悪く、プログラムの入り口がメインAPKに集中できるようにするために、いくつかの小さなテクニックを使ってデスクトップでこれらのアイコンを表示しないようにします.具体的な実現方法は以下の通りである.
1、OpenNoIconAPP.appkというメインアプリを開発しました.中はボタン一つでクリックしてサブAPPを開けます.コアジャンプコードは以下の通りです.
public void onClick(View view) {
    switch (view.getId()) {
    case R.id.btn_open_app:
         /*
         * Intent intent = getPackageManager().getLaunchIntentForPackage(
         * "com.example.noicontest"); if (intent != null) { //
         * startActivity(intent); } else { 
         * Toast.makeText(getApplicationContext(), "    APP,     ",
         * Toast.LENGTH_LONG).show(); }
         */

        Intent intent = new Intent();
        ComponentName cn = new ComponentName("com.example.noiconapp","com.example.noiconapp.MainActivity");
        intent.setComponent(cn);
        intent.setAction("android.intent.action.MAIN");
        try {
            startActivityForResult(intent, RESULT_OK);
        } catch (Exception e) {
            Toast.makeText(this, "    APP,     ",Toast.LENGTH_SHORT).show();
        }
        break;

    default:
        break;
    }
}
2、NoIconAPP.appkというサブAPPを開発し(メインAPPで開くため)、このAPPは主にデスクトップにアイコンを表示しないことを実現します.デスクトップアイコンを表示しない場合は、Android Manifest.xmlファイルを変更すればいいです.具体的には以下の通りです
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.noiconapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="14" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.noiconapp.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <!--           ,     APP  Activity        ,      LAUNCHER  DEFAULT   -->
            <!-- <category android:name="android.intent.category.LAUNCHER" /> -->
        </intent-filter>
    </activity>
</application>
</manifest>
3、上の設定でデスクトップアイコンが表示されない理由:
一般的に、私たちのAPKがインストールされた後、システムは自動的に私たちのAPKプログラムを作成します.システムLauncherはシステムがインストールしたアプリケーションのパッケージ名を自動的に検出して、これらのAPPのアイコンと名前を解析してから、アプリケーションのリストに表示します.APKプログラムは、実行後にデスクトップにアイコンや名前を表示せずに「実行中」のプログラムリストにのみ表示されます.APPのアイコンを設定するだけでは見えないので、最初の方法(私のコメントのコード)を使ってAPPを開けても成功しません.このように設定すると、パケット名は元々Launcherにロードされていないので、getPackage Manager().getLaunchIntentForPackage()方法で得られたIntentはnullです.
4、その他の例:
先日「携帯アプリホール」の最新版Androidアプリを更新しましたが、新しく追加された「ネットワーク速度測定」の機能は実はサブAPPです.このような方式を使っています.
5、サンプルプログラム:
ダウンロードをクリックします.