2012-11-25 68 views
2

我一直在尋找所有的日子無濟於事......我知道有幾個問題,但我一直沒能找到一個工程適合我。在Android主屏幕上製作一個類的快捷方式(不是MainActivity)

基本上,我有一個活動(MainActivity),一個功能添加到主屏幕的快捷方式。當我點擊快捷方式時,我希望它打開一個不同的活動(NewActivity)。這裏的阻止似乎是,當我嘗試發起與創建快捷方式不同的活動時,它無法正常工作。

這個快捷方式是成功的,但是當我點擊它時,我從Android系統中得到一個「App is not installed」toast消息。

下面的代碼添加快捷方式:

   Intent shortcutIntent = new Intent(); 
       shortcutIntent.setClassName("com.enceladus.myApp", "com.enceladus.myApp.NewActivity"); 
       shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       Intent addIntent = new Intent(); 
       addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
       addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Calculator"); 
       addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(MainActivity.this, R.drawable.calc)); 
       addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
       MainActivity.this.sendBroadcast(addIntent); 

編輯:這裏是我的清單:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.enceladus.myApp" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="9" 
    android:targetSdkVersion="15" /> 
<uses-permission android:name="android.permission.CAMERA"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 
<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.enceladus.myApp.NewActivity" 
     android:label="" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" 
     android:launchMode="singleInstance" 
     /> 
</application> 

NewActivity.class功能完美(我知道,因爲我已經調試它很多),所以這不是問題。

+0

張貼清單 – FoamyGuy

+0

完成!讓我知道你是否需要更多。 – SJonesGSO

回答

6

試着讓你的清單看起來像這樣的NewActivity條目:

<activity android:name="com.enceladus.myApp.NewActivity" 
    android:label="" 
    android:screenOrientation="portrait" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar" 
    android:launchMode="singleInstance" 
    > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 

     </intent-filter> 


    </activity> 

還可能嘗試使該快捷方式的意圖是這樣的:

Intent shortcutIntent = new Intent(MainActivity.this, NewActivity.class); 
shortcutIntent.setAction(Intent.ACTION_MAIN); //Not sure if you'll need this or not. 
//remove the next line. 
//shortcutIntent.setClassName("com.enceladus.myApp", "com.enceladus.myApp.NewActivity"); 
+2

工作驚人。非常感謝! – SJonesGSO

2

,你可以做到這一點的另一種方式是通過設置android:導出標誌爲true。

相關問題