我在我的GridViewAdapter类中,我试图通过我的ImageView ClickListener中的Intent打开WhatsApp,但它不起作用:
这是我的意图
Context mContext;
Intent launchIntent = mContext.getPackageManager().getLaunchIntentForPackage("com.whatsapp");
mContext.startActivity(launchIntent);
为什么不起作用? 我既没有错也没有成功。
编辑:添加了整个代码。所有其他意图都有效,除了Whatsapp,我的错误是什么?我不明白。
public class CustomAndroidGridViewAdapter extends BaseAdapter {
private Context mContext;
private final String[] string;
private final int[] Imageid;
public CustomAndroidGridViewAdapter(Context c, String[] string, int[] Imageid) {
mContext = c;
this.Imageid = Imageid;
this.string = string;
}
@Override
public int getCount() {
return string.length;
}
@Override
public Object getItem(int p) {
return null;
}
@Override
public long getItemId(int p) {
return 0;
}
@Override
public View getView(final int p, View convertView, ViewGroup parent) {
View grid;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
grid = new View(mContext);
grid = inflater.inflate(R.layout.gridview_custom_layout, null);
TextView textView = (TextView) grid.findViewById(R.id.gridview_text);
ImageView imageView = (ImageView) grid.findViewById(R.id.gridview_image);
textView.setText(string[p]);
imageView.setImageResource(Imageid[p]);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (string[p]) {
case "Bluetooth":
Intent intentBluetooth = new Intent();
intentBluetooth.setAction(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS);
mContext.startActivity(intentBluetooth);
break;
case "WhatsApp":
Intent launchIntent = mContext.getPackageManager().getLaunchIntentForPackage("com.whatsapp");
mContext.startActivity(launchIntent);
break;
case "Messages":
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_APP_MESSAGING);
mContext.startActivity(intent);
break;
case "Spotify":
Intent i = null;
try {
i.setComponent(new ComponentName("com.spotify.music", "com.spotify.music.MainActivity"));
mContext.startActivity(i);
} catch (Exception e) {
Toast.makeText(mContext, "Spotify not available!", Toast.LENGTH_SHORT).show();
}
break;
case "Google Play Music":
Intent intent1 = mContext.getPackageManager().getLaunchIntentForPackage("com.google.android.music");
mContext.startActivity(intent1);
break;
case "E-Mails":
try {
Intent mailClient = new Intent(Intent.ACTION_VIEW);
mailClient.setClassName("com.google.android.gm", "com.google.android.gm.ConversationListActivity");
mContext.startActivity(mailClient);
} catch (Exception e) {
Toast.makeText(mContext, "No Mail Application is installed.", Toast.LENGTH_SHORT).show();
}
break;
case "Check Test":
break;
case "Navigation":
String uri = "http://maps.google.com/maps?saddr=";
Intent intent11 = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
mContext.startActivity(intent11);
break;
case "Settings":
mContext.startActivity(new Intent(Settings.ACTION_SETTINGS));
break;
}
}
});
} else {
grid = (View) convertView;
}
return grid;
}
}
编辑2
private final String[] string;
private final int[] Imageid;
public CustomAndroidGridViewAdapter(Context c, String[] string, int[] Imageid) {
mContext = c;
this.Imageid = Imageid;
this.string = string;
}
答案 0 :(得分:1)
在WhatsApp documentation中,他们说您应该执行以下操作:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent);
如果您想跳过系统应用程序选择器(我相信您的情况),请添加以下行:
sendIntent.setPackage("com.whatsapp");
我建议你完全遵循这个过程。