2010-09-30 35 views
6

Tôi đang cố tạo lối tắt trên màn hình cho một trong các Hoạt động của tôi trong Android. tôi sử dụng mã mà làm việc trong mỗi ví dụ tuto tôi đã đọc:Không thể khởi chạy phím tắt: Ứng dụng chưa được cài đặt trên điện thoại của bạn

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(); 

Và tôi đã thêm các hành động chính để hoạt động của tôi:

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

Kết quả là các ứng dụng không muốn khởi động !

Trong tất cả mọi thứ có vẻ tốt đẹp 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) } 

Và Trang chủ nói với tôi rằng các ứng dụng không được cài đặt.

Hãy giúp tôi, tôi hoàn toàn mất và dành vài giờ để giải quyết vấn đề và đọc tất cả thông tin tôi có thể nhận được.

Cảm ơn rất nhiều!

Trả lời

9

Hãy thử điều này:

  1. thoát khỏi <intent-filter>
  2. thoát khỏi những ACTION_MAIN và chỉ sử dụng new Intent(this, MyActivity.class)
  3. thêm android: xuất khẩu = "true" để yếu tố của bạn trong manifest
+0

LỖI/Launcher (12.197): Launcher không có sự cho phép để khởi động Ý định {FLG = 0x10000000 CMP = my.package.name/.MyActivity bnds = [125.534] [235.672] (có tính năng bổ sung)}. Đảm bảo tạo bộ lọc chủ định CHÍNH cho hoạt động tương ứng hoặc sử dụng thuộc tính đã xuất cho hoạt động này. 10-01 02: 51: 57.701: ERROR/Trình khởi chạy (12197): java.lang.SecurityException: Quyền từ chối: bắt đầu Intent {flg = 0x10000000 cmp = my.package.name/.MyActivity bnds = [125,534] [235,672] (có tính năng bổ sung)} từ ProcessRecord {485b9b38 12197: com.sec.android.app.twlauncher/10005} (pid = 12197, uid = 10005) yêu cầu null –

+7

@ Profete162: Thử thêm 'android: exported =" true "' vào phần tử '' của bạn trong tệp kê khai. – CommonsWare

+1

Tìm OK khi thêm Intent.

9

Điều này có thể xảy ra nếu bạn đã khai báo hoạt động của mình hai lần trong tệp AndroidManifest.xml, trước tiên là trình khởi chạy và sau đó được khai báo như sau:

<activity android:name=".MyActivity" /> 
Các vấn đề liên quan