2010-09-30 96 views
6

我正尝试在Android中创建一个桌面快捷方式到我的某个活动。 我用的,在每一个政党成员例如工作我已阅读代码:未能启动快捷方式:应用程序未安装在您的手机

final Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); 
    ComponentName name = new ComponentName(getPackageName(), ".MyActivity"); 
    shortcutIntent.setComponent(name); 

    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 


    final Intent intent = new Intent(); 
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 

    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "blabla"); 
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon); 

    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
    sendBroadcast(intent); 
    finish(); 

我添加的主要动作,以我的活动:

<activity android:label="@string/app_name" android:name=".MyActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
     </intent-filter> 
    </activity> 

结果是,应用程序没有要推出!

在logcat的一切似乎罚款:

10-01 01:17:51.591: INFO/ActivityManager(2424): Starting activity: Intent { act=android.intent.action.MAIN flg=0x14000000 cmp=my.package.name/.MyActivity bnds=[125,384][235,522] (has extras) } 

和家庭告诉我,不安装应用程序。

请帮助我,我完全失去了,花了几个小时试图解决这个问题,并阅读所有的信息,我可以得到的。

非常感谢!

回答

9

试试这个:

  1. 摆脱<intent-filter>
  2. 摆脱ACTION_MAIN的,只是使用new Intent(this, MyActivity.class)
  3. 添加机器人:在清单
出口= “true” 以你的元素
+0

ERROR /发射器(12197):发射器不必启动意图许可{FLG = 0x10000000的CMP = my.package.name/.MyActivity bnds = [125534] [235672](具有额外)}。确保为相应的活动创建主要意图过滤器,或使用此活动的导出属性。 二月10日至1日:51:57.701:ERROR /发射器(12197):java.lang.SecurityException异常:权限拒绝:启动意图{FLG = 0x10000000的CMP = my.package.name/.MyActivity bnds = [125534] [235672] (具有额外)}从ProcessRecord {485b9b38 12197:com.sec.android.app.twlauncher/10005}(PID = 12197,UID = 10005)需要空 – 2010-10-01 00:53:54

+7

@ Profete162:尝试添加'机器人:导出= “真”'到您清单中的''元素。 – CommonsWare 2010-10-01 00:56:37

+1

Sem添加意图时确定。 <操作机器人:名字=“android.intent.action.MAIN” /> – 2010-10-01 00:58:53

9

,如果你有你的活动在AndroidManifest.xml中声明了两次,第一次作为一个发射器,然后就宣布这样才能发生:

<activity android:name=".MyActivity" />