AndroidJavaObject.GetStatic<int>("PackageManager.PERMISSION_GRANTED") 这段代码不能使用 GEtStatic不是静态方法
时间: 2024-02-18 12:00:31 浏览: 57
你说的是对的,AndroidJavaObject.GetStatic<T>(string fieldName) 是用于获取指定静态字段的值,而不是静态方法。对于静态方法,应该使用 AndroidJavaClass.CallStatic<T>(string methodName, params object[] args) 方法来调用。该方法将返回一个静态方法的返回值,其中 methodName 参数是要调用的静态方法的名称,args 参数是方法的参数。例如,要调用名为 "myStaticMethod" 的静态方法,可以使用以下代码:
```
AndroidJavaClass myClass = new AndroidJavaClass("com.my.package.MyClass");
int result = myClass.CallStatic<int>("myStaticMethod", arg1, arg2);
```
其中,"com.my.package.MyClass" 是包含静态方法的 Java 类的完整路径名,arg1 和 arg2 是传递给静态方法的参数。
相关问题
unity AndroidJavaClass unityPlayer = null; AndroidJavaObject activity = null; AndroidJavaObject pm = null; AndroidJavaObject joIntent = null; try { unityPlayer = new AndroidJavaClass(Const.UnityPlayer); activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); pm = activity.Call<AndroidJavaObject>("getPackageManager"); joIntent = pm.Call<AndroidJavaObject>("getLaunchIntentForPackage", packageName); activity.Call("startActivity", joIntent); } intent中添加一个数据
可以在创建Intent对象时,使用`putExtra()`方法添加数据。具体实现方式如下:
```csharp
using UnityEngine;
public class IntentExample : MonoBehaviour {
private const string packageName = "your.package.name";
private const string extraKey = "your_extra_key";
private const string extraValue = "your_extra_value";
void Start () {
AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject intent = activity.Call<AndroidJavaObject>("getIntent");
// 添加数据到Intent中
intent.Call<AndroidJavaObject>("putExtra", extraKey, extraValue);
// 启动应用程序
AndroidJavaObject pm = activity.Call<AndroidJavaObject>("getPackageManager");
AndroidJavaObject joIntent = pm.Call<AndroidJavaObject>("getLaunchIntentForPackage", packageName);
activity.Call("startActivity", joIntent);
}
}
```
通过上述代码,你就可以在Intent中添加数据,并启动应用程序。在被启动的应用程序中,你可以通过获取启动程序的Intent数据,获取到这个数据。具体实现方式可以参考我之前回答的问题。
AndroidJavaObject joIntent = pm.Call<AndroidJavaObject>("getLaunchIntentForPackage", packageName);这个可以putextra吗
可以的,可以在获取到启动Intent的AndroidJavaObject对象后,使用`putExtra()`方法添加数据。具体实现方式如下:
```csharp
using UnityEngine;
public class IntentExample : MonoBehaviour {
private const string packageName = "your.package.name";
private const string extraKey = "your_extra_key";
private const string extraValue = "your_extra_value";
void Start () {
AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
// 获取启动Intent
AndroidJavaObject pm = activity.Call<AndroidJavaObject>("getPackageManager");
AndroidJavaObject joIntent = pm.Call<AndroidJavaObject>("getLaunchIntentForPackage", packageName);
// 添加数据到Intent中
joIntent.Call<AndroidJavaObject>("putExtra", extraKey, extraValue);
// 启动应用程序
activity.Call("startActivity", joIntent);
}
}
```
通过上述代码,你就可以获取到启动Intent的AndroidJavaObject对象,然后在这个对象上调用`putExtra()`方法,添加数据到Intent中。
阅读全文