參考了網上很多方法,最後找到了這樣一種方法,既可以隱藏launcher中App的圖標,又可以通過隱式啓動的方式啓動起該App中的指定Activity,好了直接進入主題。
子app的工程名叫app:
AndroidManifest.xml中定義如下:
-
<application
-
android:allowBackup="true"
-
android:icon="@mipmap/ic_launcher"
-
android:label="@string/app_name"
-
android:supportsRtl="true"
-
android:theme="@style/AppTheme">
-
<activity
-
android:name=".MainActivity"
-
android:label="@string/app_name"
-
android:theme="@style/AppTheme.NoActionBar">
-
<intent-filter>
-
<action android:name="android.intent.action.MAIN" />
-
<category android:name="android.intent.category.DEFAULT"/>
-
<category android:name="android.intent.category.LAUNCHER" />
-
<data android:host="AuthActivity" android:scheme="com.example.hyy"></data>
-
</intent-filter>
-
</activity>
-
</application>
主app的名叫host:
在點擊button的時候進行跳轉,使用隱式啓動方式Uri.parse("com.example.hyy://AuthActivity"),喚起子app中的MainActivity,寫法如下:
-
public void onClick(View view) {
-
Intent intent = new Intent();
-
// ComponentName cn = new ComponentName("com.example.hyy.myapplication","com.example.hyy.myapplication.MainActivity");
-
// intent.setComponent(cn);
-
// intent.setAction("android.intent.action.MAIN");
-
Uri data = Uri.parse("com.example.hyy://AuthActivity");
-
intent.setData(data);
-
try {
-
startActivityForResult(intent, RESULT_OK);
-
} catch (Exception e) {
-
Toast.makeText(MainActivity.this, "沒有該子APP,請下載安裝",Toast.LENGTH_SHORT).show();
-
}
-
}
當然也可以使用我註釋掉的傳統的通過setComponent的方式去啓動,效果是一樣的。
爲什麼加入這個之後app就不顯示圖標了呢?
因爲我們把app的入口Activity申明爲由接收隱士的Intent來啓動,這樣自然也就不會顯示圖標了。
如果需要顯示圖標的話而且也必須響應上述Uri的話,那麼我們可以在該Activity中再加入一個intent-filter標籤,將data元素移到新建的標籤中。
這樣應用既可以顯示圖標又可以響應特定的Uri了。