Мне удалось запустить приложение с намерением, например:
public void startNewActivity(String packageName) {
Intent intent = mContext.getPackageManager().getLaunchIntentForPackage(packageName);
if (intent == null) {
// Bring user to the market or let them choose an app?
intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + packageName));
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
}
Вызывается следующим образом:
this.startNewActivity("com.seleuco.mame4droid");
Это работает, но я хотел запустить намерение непросто запустите приложение, а также непосредственно запустите игру.
Манифест MAME4Droid гласит:
<activity android:name="com.seleuco.mame4droid.MAME4droid" android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTask"
android:windowSoftInputMode="stateAlwaysHidden" android:theme="@style/Theme.MAME4droid">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:host="" android:scheme="file" />
<data android:mimeType="application/zip" />
</intent-filter>
</activity>
Но я не могу найти правильный способ вызова действия VIEW.
Я попробовал это: (прокомментированные строки - это варианты, которые я пробовал)
public void startMAME4DroidGame(String game) {
Toast.makeText(mContext, game, Toast.LENGTH_SHORT).show();
String packageName = "com.seleuco.mame4droid";
try {
//Intent intent = new Intent(packageName + "/com.seleuco.mame4droid.MAME4droid");
Intent intent = new Intent("com.seleuco.mame4droid/android.intent.action.VIEW");
//intent.setAction(Intent.ACTION_VIEW);
//intent.setData(Uri.parse("file://" + game));
intent.setData(Uri.parse("file:" + // also tried with "file://" +
"/sdcard/"+Environment.DIRECTORY_DOWNLOADS+"/"+game));
mContext.startActivity(intent);
} catch(Exception e) {
Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
В результате:
No activity found to handle Intent
{ act=com.seleuco.mame4droid.MAME4Droid/android.intent.action.VIEW
dat=file:///sdcard/Download/starforc.zip }
Какой был бы правильный способ создать Намерение для нацеливания на эту конкретную деятельность