0

我創建了一些沒有圖標的小應用程序,並且這些應用程序無法在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); 
     } 
    } 

} 
+0

我敢肯定,這是默認禁用的,因爲這對於任何應用程序來說都是非常陰暗的行爲。 – 2014-11-06 13:37:34

+0

對於沒有可啓動活動的應用程序,我看不到任何陰影。 – Okas 2014-11-06 15:34:44

回答

1

你必須設置機器人:出口= 「真」 爲貴 「的小應用程序」 的活動。這是因爲默認情況下沒有意向過濾器的活動不會被導出。

像這樣:

<activity 
    android:name=".YourActivity" 
... 
    android:exported="true" /> 

就可以啓動使用包名稱和活動名稱外部應用這項活動。

Intent intent=new Intent(); 
intent.setComponent(new ComponentName("com.your.package.name", "com.your.package.name.YourActivity")); 
startActivity(intent); 
+0

它沒有改變任何東西:/如果沒有意圖過濾器,仍然不能工作 – Eydolol 2014-11-07 08:46:35

+0

也許我們可以幫助你,如果你發佈你的代碼。 – Okas 2014-11-07 11:02:06

+0

我添加了啓動所有應用程序的應用程序的代碼。問題在於Intent始終爲空:/ – Eydolol 2014-11-07 12:32:28

相關問題