gpt4 book ai didi

android - 自定义分享意向 Activity

转载 作者:搜寻专家 更新时间:2023-11-01 08:08:00 25 4
gpt4 key购买 nike

感谢本教程:http://mobile.tutsplus.com/tutorials/android/android-sdk-implement-a-share-intent/我知道如何简单地分享我的信息:我只是创建 Intent 并开始 Activity 。但是,在 startActivity 调用和共享窗口的有效显示之间有一点延迟,所以我想创建一个自定义 Activity ,例如,一个适合该类型共享的应用程序的 ListView 。

因此我需要:

编辑:1) 一种获取可以处理 Intent 的应用程序列表的方法,在我的例子中是一个带有文本/纯 mime 类型的 ACTION.SEND Intent 。

2) 一种以我的消息正文和主题开头的方式。

最佳答案

获取已安装应用列表:

final PackageManager pm = getPackageManager();

List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {

Log.d(TAG, "Installed package :" + packageInfo.packageName);
Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName));

}// the getLaunchIntentForPackage returns an intent that you can use with startActivity()
}

并启动该软件包:

protected void launchApp(String packageName) {
Intent mIntent = getPackageManager().getLaunchIntentForPackage(packageName);
if (mIntent != null) {
try {
startActivity(mIntent);
} catch (ActivityNotFoundException err) {
Toast t = Toast.makeText(getApplicationContext(),
"Application not found", Toast.LENGTH_SHORT);
t.show();
}
}
}

编辑

此方法向包管理器查询可以使用指定操作响应 Intent 的已安装包:

public static boolean isIntentAvailable(Context context, String action) {
final PackageManager packageManager = context.getPackageManager();
final Intent intent = new Intent(action);
List<ResolveInfo> list =
packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}

并使用特定应用程序(可以处理 ACTION_SEND)分享您的文本:

ResolveInfo info = list.get(index);
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setClassName(info.activityInfo.packageName, info.activityInfo.name);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, body);
((Activity)context).startActivity(intent);

关于android - 自定义分享意向 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12669300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com