自己的程序中有个放各种图标的gridview,想实现这样一个功能:添加设备中的其他程序的icon到这个gridview中,这样点击这个icon启动相应的第三方程序。
请问怎么实现呢?

解决方案 »

  1.   

    获取系统中用户所安装的所有程序到GridView中显示,点击获取相应程序信息,并启动!
      

  2.   

    看看自带的例子啊,Home项目应该就是的了,貌似
      

  3.   

    原来的出处忘了哪里了,是关于自定义权限的。如果别人的程序没有做不能调用的权限限制的话,可以这样写
        btn.setOnClickListener(new OnClickListener() {  
    18.             @Override  
    19.             public void onClick(View v) {  
    20.                 Intent intent = new Intent();  
    21.                 // 通过指定包名来启动我们想要启动的 Activity 注意第二个参数是完全限定包名  
    22.                 intent.setClassName("com.cust.perm",  
    23.                         "com.cust.perm.PrivActivity");  
    24.                 startActivity(intent);  
    25.             }  
    如果别人的程序是这样的话1. <?xml version="1.0" encoding="utf-8"?>  
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     package="com.cust.perm" android:versionCode="1"  
    4.     android:versionName="1.0">  
    5.     <application android:icon="@drawable/icon"  
    6.         android:label="@string/app_name">  
    7.         <activity android:name=".CustPermMainActivity"  
    8.             android:label="@string/app_name">  
    9.             <intent-filter>  
    10.                 <action android:name="android.intent.action.MAIN" />  
    11.                 <category  
    12.                     android:name="android.intent.category.LAUNCHER" />  
    13.             </intent-filter>  
    14.         </activity>  
    15.         <activity android:name="PrivActivity"  
    16.             android:permission="syh.permission.STARTMYACTIVITY">  
    17.             <intent-filter>  
    18.                 <action android:name="android.intent.action.MAIN" />  
    19.                 <category  
    20.                     android:name="android.intent.category.LAUNCHER" />  
    21.             </intent-filter>  
    22.         </activity>  
    23.     </application>  
    24.     <uses-sdk android:minSdkVersion="9" />  
    25.     <permission android:description="@string/startMyActivityDesc"  
    26.         android:label="Start My Activity"  
    27.         android:name="syh.permission.STARTMYACTIVITY"  
    28.         android:protectionLevel="normal">  
    29.     </permission>  
    30. </manifest>  26.         });  
      

  4.   

    我这有个是listview的,你可以参考下
    1.package com.nico;  
    2.  
    3.import java.util.List;  
    4.  
    5.import android.app.Activity;  
    6.import android.content.Intent;  
    7.import android.content.pm.ApplicationInfo;  
    8.import android.os.Bundle;  
    9.import android.util.Log;  
    10.import android.view.LayoutInflater;  
    11.import android.view.View;  
    12.import android.view.ViewGroup;  
    13.import android.view.View.OnClickListener;  
    14.import android.widget.BaseAdapter;  
    15.import android.widget.Button;  
    16.import android.widget.ListView;  
    17.import android.widget.TextView;  
    18.  
    19.public class TestActivity extends Activity {  
    20.    public List<ApplicationInfo> applist = null;  
    21.    public ListView list = null;  
    22.    public LayoutInflater inflater = null;  
    23.  
    24.    /** Called when the activity is first created. */  
    25.    @Override  
    26.    public void onCreate(Bundle savedInstanceState) {  
    27.        super.onCreate(savedInstanceState);  
    28.        setContentView(R.layout.main);  
    29.        list = (ListView) findViewById(R.id.list);  
    30.        myAdapter madapter = new myAdapter();  
    31.        inflater = getLayoutInflater();  
    32.        applist = this.getPackageManager().getInstalledApplications(0);  
    33.  
    34.        list.setAdapter(madapter);  
    35.        // getPackageManager().getInstalledPackages(0)  
    36.    }  
    37.  
    38.    public class myAdapter extends BaseAdapter {  
    39.  
    40.        @Override  
    41.        public int getCount() {  
    42.            // TODO Auto-generated method stub  
    43.            return applist.size();  
    44.        }  
    45.  
    46.        @Override  
    47.        public Object getItem(int position) {  
    48.            // TODO Auto-generated method stub  
    49.            return applist.get(position);  
    50.        }  
    51.  
    52.        @Override  
    53.        public long getItemId(int position) {  
    54.            // TODO Auto-generated method stub  
    55.            return position;  
    56.        }  
    57.  
    58.        @Override  
    59.        public View getView(final int position, View convertView, ViewGroup parent) {  
    60.            TextView txt = null;  
    61.            if (convertView != null) {  
    62.                txt = (TextView) convertView.findViewById(R.id.appname);  
    63.                txt.setText(applist.get(position).loadLabel(  
    64.                        TestActivity.this.getPackageManager()));  
    65.            } else {  
    66.                convertView = inflater.inflate(R.layout.item, null);  
    67.                txt = (TextView) convertView.findViewById(R.id.appname);  
    68.                // Log.v("Test",  
    69.                // "2 "+applist.get(position).loadLabel(TestActivity.this.getPackageManager()));  
    70.                txt.setText(applist.get(position).loadLabel(  
    71.                        TestActivity.this.getPackageManager()));  
    72.            }  
    73.            Button btn = (Button) convertView.findViewById(R.id.btn);  
    74.            btn.setOnClickListener(new OnClickListener() {  
    75.  
    76.                @Override  
    77.                public void onClick(View v) {  
    78.                    Intent intent = getPackageManager()  
    79.                            .getLaunchIntentForPackage(  
    80.                                    applist.get(position).packageName);  
    81.                    TestActivity.this.startActivity(intent);  
    82.                }  
    83.            });  
    84.            return convertView;  
    85.        }  
    86.    }  
    87.}