如何使用 mod 文件 (.mcpack) 将 android 意图发送到 MinecraftPE?
How to send android intent to MinecraftPE with mod file (.mcpack)?
我想写一个简单的 Minecraft PE mods 加载程序(Java + Android Studio),但是遇到了一个问题。
我以为我只需要将 mod 文件从我的应用程序资源复制到“/games/com.mojang/behaviour_pack/”,但我的世界没有看到它!
然后我从 play market 下载了一些 mod 加载器作为示例,并注意到这个加载器在安装一些 mod 后打开了 Minecraft,然后游戏要求获得管理我的存储的权限。
因此,据我了解,我需要使用 mod 文件向 minecraft 发送一些意图,它会自行进一步管理。
我已经尝试过的代码:
String filepath = "android.resource://" + c.getPackageName() + "/" + filename;
try {
Uri uri = Uri.parse(filepath);
//Tried also ACTION_SEND
Intent intent = new Intent(Intent.ACTION_MAIN);
String mime = c.getContentResolver().getType(uri);
intent.setDataAndType(uri, mime);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
PackageManager packageManager = c.getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
Log.i("Acivities:", activities.toString());
// 'c' - Context
c.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
要打开的可用活动列表 mod 文件为空,因此它崩溃了。
我该如何解决这个问题?
我这个意图做错了什么?
P.S。抱歉我的英语不好。
答案是简单地将模组复制到外部存储上的任何文件夹并发送正确的意图,如下所示:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setType("file/*");
intent.setData(Uri.parse("minecraft://?import=" + filepath));
c.startActivity(intent);
其中 'c' - 上下文,“文件路径”- 外部存储中文件的路径。
我想写一个简单的 Minecraft PE mods 加载程序(Java + Android Studio),但是遇到了一个问题。
我以为我只需要将 mod 文件从我的应用程序资源复制到“/games/com.mojang/behaviour_pack/”,但我的世界没有看到它!
然后我从 play market 下载了一些 mod 加载器作为示例,并注意到这个加载器在安装一些 mod 后打开了 Minecraft,然后游戏要求获得管理我的存储的权限。
因此,据我了解,我需要使用 mod 文件向 minecraft 发送一些意图,它会自行进一步管理。 我已经尝试过的代码:
String filepath = "android.resource://" + c.getPackageName() + "/" + filename;
try {
Uri uri = Uri.parse(filepath);
//Tried also ACTION_SEND
Intent intent = new Intent(Intent.ACTION_MAIN);
String mime = c.getContentResolver().getType(uri);
intent.setDataAndType(uri, mime);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
PackageManager packageManager = c.getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
Log.i("Acivities:", activities.toString());
// 'c' - Context
c.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
要打开的可用活动列表 mod 文件为空,因此它崩溃了。
我该如何解决这个问题?
我这个意图做错了什么?
P.S。抱歉我的英语不好。
答案是简单地将模组复制到外部存储上的任何文件夹并发送正确的意图,如下所示:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setType("file/*");
intent.setData(Uri.parse("minecraft://?import=" + filepath));
c.startActivity(intent);
其中 'c' - 上下文,“文件路径”- 外部存储中文件的路径。