1

我可以使用此代码发送包名称。但是我怎样才能通过使用它的包名来启动新的应用程序呢?

lv.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {
            //CheckedTextView item = (CheckedTextView) view;

            //if(item.isChecked()){
            packageName = list.get(position).activityInfo.packageName;
            Log.i("PACKAGE", packageName);
            //TODO: Pass this packageName to a method
            finalList.add(packageName);
            //}else if(!item.isChecked()){
            //}
        }
    });
4

2 回答 2

2

你可以通过向你想要的活动发送一个 intentExtra 来做到这一点。

Intent in = new Intent(getApplicationContext(), YourOtherClass.class);          
in.putExtra(TAG_PACKAGE_NAME, packageName);
startActivity(in);

然后在“YourOtherClass”中,通过调用获取值:

Intent in = getIntent();
String packageName = in.getStringExtra(TAG_PACKAGE_NAME);

希望有帮助:)

编辑: 要发送列表 ArrayList ,您可以使用:

in.putStringArrayListExtra("listOfValues", yourArrayList);

并使用它

in.getStringArrayListExtra(listOfValues);

于 2013-07-15T04:00:27.367 回答
2

我将向您展示如何发送和接收隐式意图。这对于向一个或多个活动、服务或广播接收器以及应用程序之间发送数据很有用。缺点是这是一个“公共”意图(如果您不使用 LocalBroadcastManager),所以不要发送任何敏感信息。

  1. 创建发件人使用的发送方法。
  2. 修改接收实体的 AndroidManifest.xml(在您的情况下为 Activity)
  3. 修改接收实体以处理传入的 Intent。

第一步 - 创建发件人使用的发送方法。:

public final static String ACTION_SEND_NAME = "com.example.intent.action.SEND_NAME";
public final static String ACTION_SEND_NAME_EXTRA = "name";

public static void sendPackageName(Context context, String name) {
    if (null == context || null == name) {
        throw new IllegalArgumentException("Argument(s) may not be null");
    }

    Intent intent = new Intent(ACTION_SEND_NAME);
    intent.putExtra(ACTION_SEND_NAME_EXTRA, name);

    //You might add extra these flags
    intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP);

    //LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
    //context.sendBroadcast(intent);
    //context.startService(intent);
    context.startActivity(intent);
}

第二步 - 修改 AndroidManifest.xml:

    <activity
        android:name="com.example.MyActivity"
        android:label="@string/app_name">
        <intent-filter>
            <!-- Other Intent filters -->
            <action android:name="com.example.intent.action.SEND_NAME" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

第三步 - 修改接收实体:

void onCreate (Bundle savedInstanceState) {

//...

// Get intent, action and MIME type
Intent intent = getIntent();
String appName;

if (ACTION_SEND_NAME.equals(intent.getAction())) {
    appName = intent.getStringExtra(Intent.ACTION_SEND_NAME_EXTRA); 
}
于 2013-07-15T04:18:19.600 回答