我創建了一些沒有圖標的小應用程序,並且這些應用程序無法在Android的應用程序菜單中直接啓動。要小心謹慎,我刪除了應用程序的意圖過濾器部分:從另一個應用程序啓動外部「隱形」應用程序
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
現在,我要開始一個大的(我有一個列表視圖列出所有的小應用程序),這些小應用程序。當用戶點擊其中一個應用程序時,我開始了相應應用程序的活動。但是當我用小應用程序的packageName做到這一點時,什麼也沒有發生。
我真的很想保持這種模塊化,因爲有很多小應用程序對用戶是不可見的,只能從一個大應用程序啓動它。
如果可能,我該怎麼做。
感謝
public class MainActivity extends ListActivity {
/**
* This class describes an individual SoftFunction (the function title, and the activity class that
* demonstrates this function).
*/
private class SoftFunction {
private CharSequence title;
private String packageName;
public SoftFunction(int titleResId, int appPackageResId) {
this.title = getResources().getString(titleResId);
this.packageName = getResources().getString(appPackageResId);
}
@Override
public String toString() {
return title.toString();
}
}
/**
* The collection of all Soft Functions in the app. This gets instantiated in {@link
* #onCreate(android.os.Bundle)} because the {@link Sample} constructor needs access to {@link
* android.content.res.Resources}.
*/
private static SoftFunction[] mSoftFunctions;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Instantiate the list of samples.
mSoftFunctions = new SoftFunction[]{
new SoftFunction(R.string.title_app_test1, R.string.app_test1_package_name),
new SoftFunction(R.string.title_app_test2, R.string.app_test2_package_name),
new SoftFunction(R.string.title_app_test3, R.string.app_test3_package_name),
new SoftFunction(R.string.title_app_test4, R.string.app_test4_package_name),
};
setListAdapter(new ArrayAdapter<SoftFunction>(this,
android.R.layout.simple_list_item_1,
android.R.id.text1,
mSoftFunctions));
}
@Override
protected void onListItemClick(ListView listView, View view, int position, long id) {
// Launch the sample associated with this list position.
Intent i = getPackageManager().getLaunchIntentForPackage(mSoftFunctions[position].packageName);
if (i != null)
{
startActivity(i);
}
}
}
我敢肯定,這是默認禁用的,因爲這對於任何應用程序來說都是非常陰暗的行爲。 – 2014-11-06 13:37:34
對於沒有可啓動活動的應用程序,我看不到任何陰影。 – Okas 2014-11-06 15:34:44