转载:http://www.unitymanual.com/thread-42243-1-1.html
1.设置权限
a.从unity的安装目录(Editor\Data\PlaybackEngines\androidplayer)找到AndroidManifest.xml文件。
b.在Unity项目中,创建(Plugins\Android)文件夹,并将AndroidManifest.xml拖入。
c.编辑AndroidManifest文件,在<manifest></manifest>标签内添加所需的权限标签(<uses-permission android:name="" />)
2.获取Activity
[Java]
纯文本查看
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
//获取当前App的Activity
public
static
AndroidJavaObject Current()
{
if
(Application.platform == RuntimePlatform.Android)
return
new
AndroidJavaClass(
"com.unity3d.player.UnityPlayer"
).GetStatic<AndroidJavaObject>(
"currentActivity"
);
else
return
null
;
}
//获取指定包名的Activity
public
static
AndroidJavaObject GetActivity(string package_name,string activity_name)
{
return
new
AndroidJavaClass(package_name).GetStatic<AndroidJavaObject>(activity_name);
}
|
3.调用Android原生方法
[Java]
纯文本查看
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
// UI线程中运行
public
static
void
RunOnUIThread(AndroidJavaRunnable r)
{
Current().Call(
"runOnUiThread"
, r);
}
//获取包名
public
static
string getPackageName()
{
return
Current().Call<string>(
"getPackageName"
);
}
//讲解:call<返回值类型>("方法名");
//设置 不自动锁屏
public
static
void
DisableScreenLock()
{
Current().Call<AndroidJavaObject>(
"getWindow"
)
.Call(
"addFlags"
,
128
);
}
//讲解:call("方法名",参数1);
// 获取内置SD卡路径
public
static
string GetStoragePath()
{
if
(Application.platform == RuntimePlatform.Android)
return
new
AndroidJavaClass(
"android.os.Environment"
).CallStatic<AndroidJavaObject>(
"getExternalStorageDirectory"
).Call<string>(
"getPath"
);
else
return
"d:/movie"
;
}
//讲解:new AndroidJavaClass("全类名") ---new一个Android原生类
//讲解:CallStatic<返回类型>("方法名") ---静态方法获取一个Android原生类型
|