2011-01-21 29 views
14

Tôi muốn khởi chạy màn hình chính của Android bằng ứng dụng của mình. Mục tiêu chính là hiển thị tất cả ứng dụng cho người dùng khi họ nhấn một phím chuyên dụng. Trên thực tế, cách này không quan trọng. Bất kỳ ý tưởng để làm điều này?Cách khởi chạy màn hình chính có lập trình trong Android

Trả lời

1

Tôi không chắc liệu tôi có hoàn toàn hiểu những gì bạn đang cố gắng làm không! Nhưng nếu bạn có nghĩa là bạn muốn người dùng có thể ứng dụng khác bằng cách nhấp vào bên trong ứng dụng của bạn, thì bạn nên kiểm tra "ý định". Chạy API mẫu DEMO đang trong nhật thực, và chạy ứng dụng -> Intents

48

Đây là đoạn mã để bắt đầu HomeActivity

 Intent startMain = new Intent(Intent.ACTION_MAIN); 
     startMain.addCategory(Intent.CATEGORY_HOME); 
     startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(startMain); 
+1

Thx nhưng tôi muốn để mở màn hình cho thấy các ứng dụng với các biểu tượng của họ cho người dùng. Tôi có nghĩa là trong khi nói "màn hình chủ". – sjor

+1

Bạn có nghĩa là trình khởi chạy không? –

+0

Có, đó là những gì anh ấy nói về – Pachonk

5

Không có "màn hình hiển thị các ứng dụng với các biểu tượng của họ đối với người dùng" trong Android.

Điều bạn đang nghĩ đến là tính năng của một số màn hình chính. Không có tiêu chuẩn Intent để kích hoạt tính năng này xuất hiện và không yêu cầu màn hình chính có tính năng như vậy.

Bạn được quyền tự viết của riêng mình. Here is a sample project hiển thị các hoạt động có thể khởi chạy trong một ListView.

+0

Xin chào, tôi cần bạn giúp đỡ, tôi đã cố gắng tạo ra một màn hình khóa màn hình nó hoạt động tốt, vấn đề của tôi là sau khi khóa màn hình, nó điều hướng đến thiết bị mặc định nhà, khi tôi bấm vào nút Home nó sẽ khởi động phóng của tôi nhưng cần phải hiển thị nhà mặc định sau khi mở khóa, làm thế nào tôi có thể làm điều đó. – Aerrow

9

Nhận xét bạn đã thực hiện trên một số câu trả lời cho thấy bạn thực sự muốn khởi chạy Trình khởi chạy (bạn có thể muốn cập nhật tiêu đề nếu đây là trường hợp). Để làm điều này, hãy sử dụng cách tiếp cận tương tự Anand được đề xuất để khởi chạy hoạt động tại nhà.

Intent startMain = new Intent(Intent.ACTION_MAIN); 
startMain.addCategory(Intent.CATEGORY_LAUNCHER); 
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(startMain); 
+1

Được thực hiện tốt đẹp !!!! – Pachonk

+1

Lạ sẽ mở ứng dụng SMS của tôi. – rekire

+2

Thao tác này sẽ chỉ mở một ứng dụng (hoặc hiển thị danh sách ứng dụng) có danh mục "trình khởi chạy", phần lớn trong số đó. Nó giải thích hành vi được báo cáo bằng rekire. – pents90

4

thử một cái gì đó như thế này để bấm lại nút bất kỳ, bạn sẽ goto màn hình home/...

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     // Display confirmation here, finish() activity. 
     Intent startMain = new Intent(Intent.ACTION_MAIN); 
     startMain.addCategory(Intent.CATEGORY_HOME); 
     startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(startMain); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+1

Đừng bao giờ làm điều này. –

1

Tôi nghĩ rằng tôi rất muộn để đảng, nhưng tôi đã có một mối quan tâm tương tự. Các câu trả lời được đưa ra ở đây khởi chạy một menu lựa chọn cho phép bạn chọn Trình khởi chạy. Nếu bạn có nhiều trình khởi chạy trong mã của mình, câu trả lời ở đây: https://stackoverflow.com/a/8666155 có thể trợ giúp. Điều này trực tiếp khởi chạy mặc định màn hình chính của Android.

1

Không ai trong số các giải pháp ở đây là làm việc cho tôi ..

tôi nhận nó làm việc bằng cách sử dụng mã dưới đây

PackageManager pm = getPackageManager(); 
Intent i = new Intent("android.intent.action.MAIN"); 
i.addCategory("android.intent.category.HOME"); 
List<ResolveInfo> lst = pm.queryIntentActivities(i, 0); 
if (lst != null) { 
    for (ResolveInfo resolveInfo : lst) { 
     try { 
     Intent home = new Intent("android.intent.action.MAIN"); 
     home.addCategory("android.intent.category.HOME"); 
     home.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name); 
     startActivity(home); 
     break; 
     } catch (Throwable t) { 
      t.printStackTrace(); 
     } 
    } 
} 

Got it from: https://stackoverflow.com/a/16483596/1241783

Hy vọng điều này sẽ giúp người

0

Tôi đã đạt được nó bằng một dòng

moveTaskToBack(true); //activity.moveTaskToBack(true); 

Nó hoạt động giống như nút Home

0

Điều này phù hợp với tôi!

Intent startMain = new Intent(Intent.ACTION_MAIN); 
    startMain.addCategory(Intent.CATEGORY_HOME);  
    startActivity(startMain); 

ai đó có thể giải thích lý do tại sao chúng tôi cần điều này?

startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

btw, đây là những gì tôi đang tìm kiếm

moveTaskToBack(true); 
Các vấn đề liên quan