使用快捷方式分享意向选项 android
Share intent option using Shortcut android
默认情况下,iOS 在快捷方式选项中提供 "Share appname" 选项,当应用程序从应用商店下载时。
参考下图:
单击它时,它会在 phone 菜单屏幕本身中打开共享意图 ,无需重定向到应用程序,用户可以在其中共享应用程序.
我想在 android 中实现它。
这是我到目前为止尝试过的方法:
<shortcut
android:shortcutId="share_app"
android:enabled="true"
android:icon="@drawable/ic_cart_active"
android:shortcutShortLabel="@string/shortcut_share"
android:shortcutLongLabel="@string/shortcut_share">
<intent
android:action="android.intent.action.send"
android:targetPackage="com.example.android.internal"
android:targetClass="" />
</shortcut>
但这行不通,因为我无法理解,应该是什么
targetClass 在这里。
编辑: Nilesh 的回答几乎奏效了,但我现在面临的唯一问题是,每当我从快捷方式单击共享按钮时,启动器 activity 显示一秒钟,然后共享意图选择器显示 up.Now 当我按下主页按钮并显示共享选项时,应用程序将 background.This 不应该 happen.Any 知道如何避免这种情况。
有两种创建快捷方式的方法。
一: 创建静态快捷方式,在您应用的清单文件 (AndroidManifest.xml) 中,找到一个 activity,其 Intent 过滤器设置为 android.intent.action.MAIN 动作和 android.intent.category.LAUNCHER 类别。然后向此 activity 添加一个元素,该元素引用定义应用程序快捷方式的资源文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application ... >
<activity android:name="Main">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
...
二:创建动态快捷方式
你可以使用代码来实现,ShortcutManager API 允许你完成以下对动态快捷方式的操作:
ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
ShortcutInfo shortcut = new ShortcutInfo.Builder(context, "id1")
.setShortLabel("Website")
.setLongLabel("Open the website")
.setIcon(Icon.createWithResource(context, R.drawable.icon_website))
.setIntent(new Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.mysite.example.com/")))
.build();
shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));
更多信息,可以通过官网how to create shortcut in android?
您可以使用App shortcuts
但是这个选项的主要缺点是奥利奥和更高版本的android
都可以使用它
这里是示例代码
Create a resource file: res/xml
directory (Screenshot)
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:enabled="true"
android:icon="@drawable/ic_share"
android:shortcutDisabledMessage="@string/share_app"
android:shortcutId="nilu"
android:shortcutLongLabel="@string/share_app"
android:shortcutShortLabel="@string/share_app">
<intent
android:action="android.intent.action.VIEW"
android:targetClass="neel.com.demo.ShareActivity"
android:targetPackage="neel.com.demo" />
<categories android:name="android.shortcut.conversation" />
</shortcut>
</shortcuts>
Now you need to register your shortcut in your manifest file under activity tag
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="neel.com.demo">
<application
android:allowBackup="false"
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=".MainActivity" />
<activity android:name=".ShareActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
</application>
</manifest>
Now create a simple share acivity to share your app link
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class ShareActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT,
"Hey check out my app at: https://play.google.com/store/apps/details?id=neel.com.demo");
sendIntent.setType("text/plain");
startActivity(sendIntent);
finish();
}
}
输出
当用户长按应用程序图标时,您的快捷方式将如下图所示
点击快捷方式后
更新 在你的 ShareActivity
中使用 android:excludeFromRecents="true"
<application
android:allowBackup="false"
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=".MainActivity" />
<activity
android:name=".ShareActivity"
android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
</application>
默认情况下,iOS 在快捷方式选项中提供 "Share appname" 选项,当应用程序从应用商店下载时。
参考下图:
单击它时,它会在 phone 菜单屏幕本身中打开共享意图 ,无需重定向到应用程序,用户可以在其中共享应用程序.
我想在 android 中实现它。
这是我到目前为止尝试过的方法:
<shortcut
android:shortcutId="share_app"
android:enabled="true"
android:icon="@drawable/ic_cart_active"
android:shortcutShortLabel="@string/shortcut_share"
android:shortcutLongLabel="@string/shortcut_share">
<intent
android:action="android.intent.action.send"
android:targetPackage="com.example.android.internal"
android:targetClass="" />
</shortcut>
但这行不通,因为我无法理解,应该是什么 targetClass 在这里。
编辑: Nilesh 的回答几乎奏效了,但我现在面临的唯一问题是,每当我从快捷方式单击共享按钮时,启动器 activity 显示一秒钟,然后共享意图选择器显示 up.Now 当我按下主页按钮并显示共享选项时,应用程序将 background.This 不应该 happen.Any 知道如何避免这种情况。
有两种创建快捷方式的方法。
一: 创建静态快捷方式,在您应用的清单文件 (AndroidManifest.xml) 中,找到一个 activity,其 Intent 过滤器设置为 android.intent.action.MAIN 动作和 android.intent.category.LAUNCHER 类别。然后向此 activity 添加一个元素,该元素引用定义应用程序快捷方式的资源文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application ... >
<activity android:name="Main">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
...
二:创建动态快捷方式 你可以使用代码来实现,ShortcutManager API 允许你完成以下对动态快捷方式的操作:
ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
ShortcutInfo shortcut = new ShortcutInfo.Builder(context, "id1")
.setShortLabel("Website")
.setLongLabel("Open the website")
.setIcon(Icon.createWithResource(context, R.drawable.icon_website))
.setIntent(new Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.mysite.example.com/")))
.build();
shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));
更多信息,可以通过官网how to create shortcut in android?
您可以使用App shortcuts
但是这个选项的主要缺点是奥利奥和更高版本的android
都可以使用它这里是示例代码
Create a resource file:
res/xml
directory (Screenshot)
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:enabled="true"
android:icon="@drawable/ic_share"
android:shortcutDisabledMessage="@string/share_app"
android:shortcutId="nilu"
android:shortcutLongLabel="@string/share_app"
android:shortcutShortLabel="@string/share_app">
<intent
android:action="android.intent.action.VIEW"
android:targetClass="neel.com.demo.ShareActivity"
android:targetPackage="neel.com.demo" />
<categories android:name="android.shortcut.conversation" />
</shortcut>
</shortcuts>
Now you need to register your shortcut in your manifest file under activity tag
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="neel.com.demo">
<application
android:allowBackup="false"
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=".MainActivity" />
<activity android:name=".ShareActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
</application>
</manifest>
Now create a simple share acivity to share your app link
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class ShareActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT,
"Hey check out my app at: https://play.google.com/store/apps/details?id=neel.com.demo");
sendIntent.setType("text/plain");
startActivity(sendIntent);
finish();
}
}
输出
当用户长按应用程序图标时,您的快捷方式将如下图所示
点击快捷方式后
更新 在你的 ShareActivity
android:excludeFromRecents="true"
<application
android:allowBackup="false"
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=".MainActivity" />
<activity
android:name=".ShareActivity"
android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
</application>