Unity 에서는 Android Native를 사용해야한다.
먼저 타 앱 공유 메뉴에 내 앱이 나오게 하려면
AndroidManifest.xml 에 아래 부분이 포함되어야 한다.
<activity android:name="com.unity3d.player.UnityPlayerActivity" ..... > <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity>
위 내용은 공유 데이터 형식이 text 일때만 받겠다는 것.
자세한 건 공식 메뉴얼 ㄱㄱ
다음은 코드 부분
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); AndroidJavaObject intent = currentActivity.Call<AndroidJavaObject>("getIntent"); string action = intent.Call<string>("getAction"); Debug.Log(action); //android.intent.action.SEND string extra = intent.Call<string>("getStringExtra", "android.intent.extra.TEXT"); Debug.Log(extra);
타 앱에서 공유를 받았을 때 "getAction" 값이 "android.intent.action.SEND" 이다.
그리고 텍스트데이터는 "getStringExtra" 함수와 "android.intent.extra.TEXT" 인수를 사용해야 한다.
처음엔 뭣 모르고 Intent에 getDataString() 함수가 있길래
당연히 text 데이터면 이 함수인줄 착각하고 삽질함;;
"android.intent.extra.TEXT" 인수도 구글링으로 찾으며 삽질하다가
공식메뉴얼보고 알았다;; stackoverflow 보다 먼저 공식메뉴얼을 보는 습관을 길러야;;
Intent class
댓글 없음:
댓글 쓰기