스마트폰을 사용하다보면 "카카오톡 > 나에게" 기능을 많이 사용하게 되는데, 그 이유는 따로 상대방을 지정할 필요도 문구도 작성할 필요없이 가장 빠르게 흔적을 남길 수 있는 방법이기 때문입니다. 공유가 완료되면 깔끔하게 "√" 문구가 Toast메세지가 뜹니다.
제가 만들고 싶은 앱에도 해당 기능을 넣기 위해 제가 생각하는대로 만들어보겠습니다.
우선 공유기능을 사용할 때 자신의 앱이 공유가능한 리스트에 포함되어야 합니다.
그러기 위해선 AndroidManifest.xml에 아래의 코드를 적용해야합니다.
위치는 공유리스트에서 앱을 눌렀을 때 실행되길 원하는 <activity>안에다가 넣어주시면 됩니다.
저는 앱이 실행될 때 가장 먼저 뜨는 엑티비티가 동일하게 뜨는 줄 알았는데, 그게 아니라 아래의 코드를 추가한 엑티비티를 실행할 수 있더군요.
(앱이 아이콘을 통해 실행될 때랑 공유를 통해 실행될 때 뜨는 엑티비티를 선택할 수 있다는 뜻!)
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
저는 엑티비티를 하나 더 만들었는데, 만들어진 엑티비티는 뷰를 연결하지 않았습니다.
즉, setContentView(R.layout.activity_main); 코드가 없습니다.
그래야 공유를 통해 앱이 실행되었을 경우 뷰가 뜨지 않고 토스트만 띄울 수 있기 때문입니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);Toast.makeText(this, "√", Toast.LENGTH_SHORT).show();
finish();
}
*실제적용코드
-AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bluesmile.somi.clipboard">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Activity.IntentShare"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
<!-- 다른앱( 안드로이드의 다른 웹브라우져 ) 에서 공유기능을 사용했을때 내앱이 검색되도록 하기 -->
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
</application>
</manifest>
-IntentShare.java
package com.bluesmile.somi.clipboard.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.bluesmile.somi.clipboard.Shareinfo;
public class IntentShare extends AppCompatActivity {
SharedPreferences datapref;
Gson gson;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toast.makeText(this, "√", Toast.LENGTH_SHORT).show();
finish();
}
}
위와 같이 소스를 적용하면 "카카오톡 > 나에게"와 동일한 기능을 자신의 앱에 적용할 수 있습니다~
아직 배우는 단계라 틀린 부분이나 부족한 설명은 적어주시면 바로 추가하도록 하겠습니다.
감사합니다^^