Action Bar의 공유 버튼에 공유 기록을 표시하는 방법
10297 단어 Android
ShareActionProvider
ICS 이후에는 Action Bar에서 공유 MenuItem을 설정할 때 공유 이력을 표시할 수 있습니다.
ShareAction Provider는 구현을 위한 메커니즘으로 도입되었습니다.
이루어지다
먼저, menu 정의에서 공유 MenuItem을 정의합니다.
이때 android:actionProviderClass
속성에 정의android.widget.ShareActionProvider
됩니다.
이 속성을 정의한 후 공유 아이콘을 자동으로 설정합니다.android:showAsAction
never
에서도 정상적으로 일했지만 최신 역사 기록이 사라졌기 때문에 ifroom
나always
가 가장 좋다.<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MyActivity">
<item
android:id="@+id/action_share_always"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="always"
android:title="@string/action_share" />
</menu>
그런 다음 소스 코드 측면에서 MenuItem 을 설정합니다.
사용ShareActionProvider
의 경우 공유 동작에서 실행Intent
도 onCreateOptionsMenu
에서 지정할 수 있기 때문에 onOptionsItemSelected
에서 처리할 필요가 없다.
또한 아래의 예에서 사용ShareCompat.IntentBuilder
하지만 일반적으로 생성Intent
setShareIntent
해도 문제없이 이동한다. @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.my, menu);
// ShareActionProvider の設定
MenuItem actionItem = menu.findItem(R.id.action_share_always);
ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
// インテントの設定
Intent shareIntent = ShareCompat.IntentBuilder.from(this)
.setText("hogehoge")
.setType("text/plain")
.getIntent();
// ShareActionProviderにインテントの設定
actionProvider.setShareIntent(shareIntent);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// 何も書かなくてOK
return super.onOptionsItemSelected(item);
}
액션
공유 아이콘을 처음 눌렀을 때 아래 팝업을 표시합니다.
모두 보이기→트위터 선택, 트위터에서 돌아오면 바로 이런 화면.
여러 앱을 통해 공유를 시도한 결과 왼쪽 공유 아이콘이 클릭한 팝업도 최신 이전의 기록이었다.
ShareCompat ShareActionProvider
편리하지만 ICS 이후에만 가능하다.
ICS 이전의 단말기와 대응하는 응용에서 똑같이 실현하기 위해SupportLibrary
의ShareCompat
를 이용한다.
그러나 사용ShareCompat
하더라도 ICS 이전 터미널에는 이력이 표시되지 않습니다.
이 부근은 NotificationCompat
등과 같다.
이루어지다
ShareCompat
에서 실현될 때menu 정의에 특별한 표시가 필요하지 않습니다.
그러나 기본 공유 아이콘이 설정되어 있지 않기 때문에 정의가 필요합니다.<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MyActivity">
<item
android:id="@+id/action_share_always"
android:icon="@android:drawable/ic_menu_share"
android:title="共有"
app:showAsAction="always" />
</menu>
원본 코드 측면의 처리는 ShareActionProvider
의 부분을 다시 쓰는 ShareCompat
의 형식이 되었다.ShareActionProvider
와 마찬가지로 onOptionsItemSelected
의 처리가 특별히 필요하지 않습니다.
그러나 Intent
가 아닌 전달ShareCompat.IntentBuilder
이어서 다소 제한이 생겼다.
예를 들어 ShareCompat.IntentBuilder
에서 지정할 수 없기 때문setAction()
이나 ACTION_SEND
이외의 동작ACTION_SEND_MULTIPLE
을 지정할 수 없다(약간 자신이 없다...). @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.my, menu);
// IntentBuilderの生成
ShareCompat.IntentBuilder builder = ShareCompat.IntentBuilder.from(this);
builder.setText("hogehoge")
.setType("text/plain");
// MenuItemにShareアクションの設定
ShareCompat.configureMenuItem(menu, R.id.action_share_always, builder);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
액션
ICS 이후의 단말기의 행동은 ShareActionProvider
와 변화가 없다.
이전 단말기에서menu의 xml에서 지정한 아이콘만 표시하고 헤더를 뽑을 때 IntentBuilder
생성된 Intent
만 표시합니다.
물리적 메뉴 버튼이 있는 기종도 마찬가지다.
총결산
Action Bar에 공유 버튼을 설치하는 안드로이드 애플리케이션은 많습니다.ShareActionProvider
,ShareCompat
를 사용하면 (ICS 이후만) 아주 적은 시간에 공유 버튼을 풍부하게 공유할 수 있기 때문에 상당히 편리하다고 생각합니다.
개인적으로도 편리한 만큼 앱 제작자가 꾸준히 이뤄내길 바란다.
Reference
이 문제에 관하여(Action Bar의 공유 버튼에 공유 기록을 표시하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nein37/items/cf5af57f4a313958631d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MyActivity">
<item
android:id="@+id/action_share_always"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="always"
android:title="@string/action_share" />
</menu>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.my, menu);
// ShareActionProvider の設定
MenuItem actionItem = menu.findItem(R.id.action_share_always);
ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
// インテントの設定
Intent shareIntent = ShareCompat.IntentBuilder.from(this)
.setText("hogehoge")
.setType("text/plain")
.getIntent();
// ShareActionProviderにインテントの設定
actionProvider.setShareIntent(shareIntent);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// 何も書かなくてOK
return super.onOptionsItemSelected(item);
}
ShareActionProvider
편리하지만 ICS 이후에만 가능하다.ICS 이전의 단말기와 대응하는 응용에서 똑같이 실현하기 위해
SupportLibrary
의ShareCompat
를 이용한다.그러나 사용
ShareCompat
하더라도 ICS 이전 터미널에는 이력이 표시되지 않습니다.이 부근은
NotificationCompat
등과 같다.이루어지다
ShareCompat
에서 실현될 때menu 정의에 특별한 표시가 필요하지 않습니다.그러나 기본 공유 아이콘이 설정되어 있지 않기 때문에 정의가 필요합니다.
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MyActivity">
<item
android:id="@+id/action_share_always"
android:icon="@android:drawable/ic_menu_share"
android:title="共有"
app:showAsAction="always" />
</menu>
원본 코드 측면의 처리는 ShareActionProvider
의 부분을 다시 쓰는 ShareCompat
의 형식이 되었다.ShareActionProvider
와 마찬가지로 onOptionsItemSelected
의 처리가 특별히 필요하지 않습니다.그러나
Intent
가 아닌 전달ShareCompat.IntentBuilder
이어서 다소 제한이 생겼다.예를 들어
ShareCompat.IntentBuilder
에서 지정할 수 없기 때문setAction()
이나 ACTION_SEND
이외의 동작ACTION_SEND_MULTIPLE
을 지정할 수 없다(약간 자신이 없다...). @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.my, menu);
// IntentBuilderの生成
ShareCompat.IntentBuilder builder = ShareCompat.IntentBuilder.from(this);
builder.setText("hogehoge")
.setType("text/plain");
// MenuItemにShareアクションの設定
ShareCompat.configureMenuItem(menu, R.id.action_share_always, builder);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
액션
ICS 이후의 단말기의 행동은
ShareActionProvider
와 변화가 없다.이전 단말기에서menu의 xml에서 지정한 아이콘만 표시하고 헤더를 뽑을 때
IntentBuilder
생성된 Intent
만 표시합니다.물리적 메뉴 버튼이 있는 기종도 마찬가지다.
총결산
Action Bar에 공유 버튼을 설치하는 안드로이드 애플리케이션은 많습니다.ShareActionProvider
,ShareCompat
를 사용하면 (ICS 이후만) 아주 적은 시간에 공유 버튼을 풍부하게 공유할 수 있기 때문에 상당히 편리하다고 생각합니다.
개인적으로도 편리한 만큼 앱 제작자가 꾸준히 이뤄내길 바란다.
Reference
이 문제에 관하여(Action Bar의 공유 버튼에 공유 기록을 표시하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nein37/items/cf5af57f4a313958631d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Action Bar의 공유 버튼에 공유 기록을 표시하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nein37/items/cf5af57f4a313958631d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)