2012-06-29 77 views
1

我試圖製作一個簡單的應用程序,當用戶從主屏幕單擊時,將用戶發送到特定的(系統安裝的)應用程序(系統設置,日曆,瀏覽器等)或應用程序抽屜。使用意圖打開系統應用程序

例如,我正在嘗試在我的應用程序啓動時打開系統設置,就像設置的快捷方式一樣。

是否可以按照我想要的方式實現這一點?有沒有人有什麼建議?

這裏是我的代碼:

import android.app.Activity; 
import android.content.Intent; 
import android.content.pm.PackageManager; 


public class MainActivity extends Activity { 

    public void LaunchComponent (String packageName, String name){ 
     Intent i = new Intent(Intent.ACTION_MAIN); 
     PackageManager manager = getPackageManager(); 
     i = manager.getLaunchIntentForPackage("com.sec.android.app.controlpanel"); 
     i.addCategory(Intent.CATEGORY_LAUNCHER); 
     startActivity(i); 

    } 
} 

我目前還沒有一個佈局文件,如main.xml中,在我的應用程序,因爲它沒有任何UI或佈局元素。它應該做的就是將用戶發送到其他應用程序活動。我一直在使用這個教程(缺少鏈接),我已經實現了所有的代碼示例,我無法弄清楚,我對android開發很陌生,而java不是我最好的語言。歡迎任何批評或建議。

+0

究竟是什麼問題?如上代碼不完整 –

回答

3

你必須要調用LaunchComponent可以在的onCreate第一生命週期的回調函數來完成

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    LaunchComponent (packageName, name); 
} 

更新

import android.app.Activity; 
import android.content.Intent; 
import android.content.pm.PackageManager; 


public class MainActivity extends Activity { 

public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     LaunchComponent ("com.sec.android.app.controlpanel", "abc?"); 
    } 


public void LaunchComponent (String packageName, String name){ 
    Intent i = new Intent(Intent.ACTION_MAIN); 
    PackageManager manager = getPackageManager(); 
    i = manager.getLaunchIntentForPackage(packageName); 
    i.addCategory(Intent.CATEGORY_LAUNCHER); 
    startActivity(i); 

} 
+0

對不起,但還沒有得到? –

+0

是啊我仍然有問題,在Eclipse的發射組件,希望它是無效的,我不知道如何設置我想要的包,我會是替換packageName與com.xxx.xxx.xx或將我創建一個字符串,其名稱是packageName,值爲com.xxx.xxx.xxx,另外我的公共案例是MainActivity extends Activity {是使用 –

+0

的正確公共類,您將從中獲取包名'com.xxx.xxx。 xxx'? –

1

在這個例子中,你可以打開系統的鬧鐘應用。 ,希望它有幫助,例如活動:

public class TestActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     PackageManager packageManager = this.getPackageManager(); 
     if (packageManager != null) { 

      Intent AlarmClockIntent = 
       new Intent(Intent.ACTION_MAIN).addCategory(
         Intent.CATEGORY_LAUNCHER).setComponent(
           new ComponentName("com.android.deskclock", "com.android.deskclock.DeskClock")); 

      ResolveInfo resolved = packageManager.resolveActivity(AlarmClockIntent, PackageManager.MATCH_DEFAULT_ONLY); 
      if (resolved != null) { 
       startActivity(AlarmClockIntent); 
       finish(); 
       return; 
      } else { 
       // required activity can not be located! 
      } 
     } 
    } 
} 
+0

這可能會有所幫助,對不起(新開發者)我在哪裏輸入這個代碼,在onCreate之後?或之後推薦的LaunchComponent –

+0

你可以插入onCreate()或更好的onResume() - 沒有問題 –

+0

我討厭繼續問你們支持,我覺得真的很愚蠢。希望最終這個東西會點擊,你能提供一個完整的java文件 –

相關問題