2015-05-01 31 views
0

嘿傢伙,現在我正在開發一個應用程序。我已經創建了一個代碼,可以在GridView中顯示所有已安裝的應用程序,但是當我單擊該圖標時什麼也沒有發生,那麼我該如何從它啓動應用程序?這裏是我的代碼:如何在Android中點擊圖標時啓動應用程序?

MainActivity:

package com.example.appgrid; 

import java.util.List; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.pm.ResolveInfo; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 

public class MainActivity extends Activity { 

    GridView mGrid; 

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

     loadApps(); 

     setContentView(R.layout.activity_main); 
     mGrid = (GridView) findViewById(R.id.myGrid); 
     mGrid.setAdapter(new AppsAdapter()); 
    } 

    private List<ResolveInfo> mApps; 

    private void loadApps() { 
     // TODO Auto-generated method stub 
     Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
     mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

     mApps = getPackageManager().queryIntentActivities(mainIntent, 0); 
    } 


    public class AppsAdapter extends BaseAdapter { 
     public AppsAdapter() { 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView i; 

      if (convertView == null) { 
       i = new ImageView(MainActivity.this); 
       i.setScaleType(ImageView.ScaleType.FIT_CENTER); 
       i.setLayoutParams(new GridView.LayoutParams(95, 95)); 
       i.setPadding(10, 10, 10, 10); 
      } else { 
       i = (ImageView) convertView; 
      } 

      ResolveInfo info = mApps.get(position); 
      i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager())); 

      return i; 
     } 

     public final int getCount() { 
      return mApps.size(); 
     } 

     public final Object getItem(int position) { 
      return mApps.get(position); 
     } 

     public final long getItemId(int position) { 
      return position; 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

的main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.appgrid.MainActivity" > 

    <GridView 
     android:id="@+id/myGrid" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:numColumns="4" 
     android:gravity="center"> 

    </GridView> 

</RelativeLayout> 

提前感謝!

+0

你嘗試創建一個意圖,並啓動它 – Msk

+0

我在一個示例項目嘗試過,但沒有工作你能告訴我一個例子?請? –

回答

0

試一下這個

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address"); 
startActivity(launchIntent); 
+0

但是如何使用這段代碼?你可以通過在我上面給出的代碼中實現這個來顯示我嗎?我一定會接受你的回答! –

+0

我正在嘗試很多解決方案,但它不起作用請幫忙! –

+0

檢查此鏈接http://stackoverflow.com/questions/3872063/launch-an-application-from-another-application-on-android – Msk

相關問題