android - 如何在不建立网站的情况下生成链接并导航到应用程序
问题描述
我正在尝试构建一个 android 应用程序。在“WhatsApp”中有一个“共享”选项可以共享当前的产品详细信息。此应用程序没有网站。在这种情况下,我应该共享哪个链接,以便在有人点击时打开我的应用程序中的特定产品详细信息活动。
请看修改后的代码
<activity
android:name="com.bodaty.samyata.samyata4.profiles.Profile"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" />
<activity
android:name="com.bodaty.samyata.samyata4.customer_service.Contacts"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" />
<activity
android:name="com.bodaty.samyata.samyata4.barcode.Barcode"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" />
<activity
android:name="com.bodaty.samyata.samyata4.login_pages.EmailVerification"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" />
<activity
android:name="com.bodaty.samyata.samyata4.product_search.Details"
android:theme="@style/AppTheme"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name ="android.intent.action.VIEW"/>
<category android:name ="android.intent.category.DEFAULT"/>
<category android:name ="android.intent.category.BROWSABLE"/>
<data android:host="www.samyata.com"
android:scheme="samyata"/>
</intent-filter>
</activity>
<activity
android:name="com.bodaty.samyata.samyata4.product_search.VoiceRecognitionActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" />
<activity
爪哇代码:
//.....for network.....//
NetworkReceiver networkReceiver;
LinearLayout linearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
setTitle("Product_Details");
if(getSupportActionBar() != null){
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
Intent i1 = getIntent();
Uri data = i1.getData();
if(data != null){
Log.e("data", String.valueOf(data));
}else{
Log.e("data123", String.valueOf(data));
}
mAuth = FirebaseAuth.getInstance();
user_id = mAuth.getUid();
listView = findViewById(R.id.list);
ratingBar1 = findViewById(R.id.ratingBar1);
img = findViewById(R.id.img);
ls_data=new ArrayList<>();
// for network...//
linearLayout = findViewById(R.id.linearlayout);
networkReceiver = new NetworkReceiver();
日志猫
Increasing code cache capacity to 1024KB
08-01 07:25:33.316 25408-25413/com.bodaty.samyata.samyata4 I/zygote: Do full code cache collection, code=497KB, data=314KB
08-01 07:25:33.319 25408-25413/com.bodaty.samyata.samyata4 I/zygote: After code cache collection, code=484KB, data=261KB
08-01 07:25:34.420 25408-25408/com.bodaty.samyata.samyata4 I/AssistStructure: Flattened final assist data: 9352 bytes, containing 1 windows, 44 views
08-01 07:25:34.559 25408-25413/com.bodaty.samyata.samyata4 I/zygote: Do partial code cache collection, code=490KB, data=277KB
08-01 07:25:34.565 25408-25413/com.bodaty.samyata.samyata4 I/zygote: After code cache collection, code=490KB, data=277KB
Increasing code cache capacity to 2MB
08-01 07:25:42.710 25408-25408/com.bodaty.samyata.samyata4 E/data123: null
解决方案
如果没有网站,这取决于您的应用程序预安装在用户设备上的前提条件。
假设您的应用名称是 MyApp,您选择与应用关联的域是 www.myapp.com
现在,每当用户单击链接“ https://www.myapp.com/productA ”时,productA 的详细信息页面应在 DetailActivity.class 中打开
为此,您必须在清单中针对 DetailActivity.class 声明添加一个意图过滤器:
<activity
android:name=".DetailActivity"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.myapp.com"
android:scheme="https" />
</intent-filter>
</activity>
在您的活动中,您可以获得将您带到该屏幕的网址,如下所示:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
Intent intent = getIntent();
Uri data = intent.getData(); // data= https://www.myapp.com/productA
String productId = data.getLastPathSegment() // "productA"
}
现在使用此数据,您可以显示产品 A 的详细信息。
您可以使用以下任何过滤器定义您的着陆网址:
<data android:scheme="string"
android:host="string"
android:port="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:mimeType="string" />
有关更多信息,请参阅https://developer.android.com/guide/topics/manifest/data-element
注意:当用户点击链接时,他会看到一个对话框,让他在浏览器和您的应用程序之间进行选择。这假设他选择了您的应用程序。
推荐阅读
- swiftui - 在方法中获取 EnvironmentObject 属性
- python - 如何按月计算单词(unigram/bigram/trigram)的出现次数?
- java - EditText setError icon 和 endIconMode 融合
- c++ - 函数返回时未调用复制构造函数
- azure-data-factory-2 - 如何保护 Azure 数据工厂中自托管集成运行时节点之间的通信
- python - 插入 PostgreSQL 数据库时出现意外的数组元素
- node.js - 处理嵌套的 Promise
- android - ViewModel 观察每个返回片段
- reactjs - 如何在不使用 undefined 和 empty ("") 的情况下传递可选参数同时省略一些其他可选参数
- javascript - Vue JS NPM 模块导入组件