[英]Start Activity from Service in Android 10
請注意,問題可能與 Android 10 有關
我試圖從 myInAppMessagingService 啟動一個新活動,但我每次都收到空指針異常 un startActivitys 上下文參數。
所以這是我的服務代碼:
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import androidx.annotation.NonNull;
import com.google.firebase.inappmessaging.FirebaseInAppMessagingClickListener;
import com.google.firebase.inappmessaging.model.Action;
import com.google.firebase.inappmessaging.model.CampaignMetadata;
import com.google.firebase.inappmessaging.model.InAppMessage;
import viaapp_v2.systems.webview_activity.webview_base;
public class MyFirebaseInAppMessaging extends Service implements FirebaseInAppMessagingClickListener {
String TAG = "MyFirebaseInAppMessaging";
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void messageClicked(@NonNull InAppMessage inAppMessage, @NonNull Action action) {
// Determine which URL the user clicked
String url = action.getActionUrl();
Log.d(TAG, "Popup URL :"+url);
// Get general information about the campaign
CampaignMetadata metadata = inAppMessage.getCampaignMetadata();
Log.d(TAG, "metadata :"+metadata);
try{
startActivity(
new Intent(MyFirebaseInAppMessaging.this, webview_base.class)
.putExtra("web_url", url)
);
}catch(Exception e){
e.printStackTrace();
}
}
}
由於第一個參數上下文,我在“startActivity(..)”行中出錯。 我嘗試了所有方法 - getApplicationContext()、MyFirebaseInAppMessaging.this 或只是簡單的“this”,但沒有任何效果。
我閱讀了 Android Developers 提供的限制,但我想不出任何新的東西。
否則,該應用程序可以完美運行 - webview_base 類可以正常工作,其他所有內容也是如此,包括 myInAppMesaging 服務偵聽器。 它只是 startActivity() 中的一個上下文,它阻止了我。
謝謝你的幫助。
-- 9 月 7 日更新
在玩弄權限后,標志等。 我注意到沒有任何效果。 較新的 Android 操作系統會在應用程序上過度打開網絡,但較舊的 Android 操作系統只會在沒有任何特定崩潰報告的情況下崩潰。 這很奇怪。
試試下面的代碼,它會工作..
你必須添加 FLAG- FLAG_ACTIVITY_NEW_TASK
Intent myIntent = new Intent(this, webview_base.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(myIntent);
如果您的應用不可見且有一段時間不可見,並且您不想使用通知,則 Android 10 中將不允許使用通知,除非
該應用已被用戶授予SYSTEM_ALERT_WINDOW權限。
(來自問題中提到的限制頁面)
所以這是 Android 10 的一個選項。
在 AndroidManifest.xml 中列出SYSTEM_ALERT_WINDOW是不夠的。 您還需要用戶授予應用程序“繪制其他應用程序”權限。 在這里查看如何輕松做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.